CA體系結構介紹與Openssl的使用

目錄

1     CA架構說明

1.1      名詞說明

1.2      信任關係說明

2     證書在windows服務中的具體使用方式

3     Openssl實現CA體系的操作方法

3.1      使用自簽名證書自建CA(在CA端操作)

3.2      在客戶端生成證書申請文件(在APP端操作)

3.3      在CA端頒發證書

3.4      具體案例測試

3.4.1       環境介紹

3.4.2       Centos19安裝配置nginx

3.4.3       nginx使用自簽名啓用ssl認證

3.4.4       使用windows01訪問測試---預期效果證書不信任

3.4.5       windows01添加對自簽名證書的信任

3.4.6       使用windows01訪問測試---預期效果證書信任

3.4.7       在centos18上創建CA

3.4.8       使用CA頒發證書並綁定到nginx

3.4.9       使用windows01訪問測試---預期效果證書不信任

3.4.10     windows01添加對CA(centos18)的信任

3.4.11     使用windows01訪問測試---預期效果證書信任

 

1     CA架構說明

1.1   名詞說明

CA:證書頒發機構,類似與工商局,專門發放證書的機構,只有得到了CA頒發的證書應用才能正常對外提供服務

公鑰:顧名思義,公共的祕鑰,安全性要求不高,可以共享出來給大家使用

私鑰:私有的祕鑰,只能自己使用,需要防止泄露

公鑰和祕鑰的關係:公鑰和祕鑰成對出現,互相認證,即我的公鑰加密的文件只能我的祕鑰解開,我的祕鑰加密的文件只能我的公鑰解開,每個個體(可以是用戶或者主機)都可以擁有一對。

證書:採用公鑰祕鑰的特性生成的一種文件,由CA頒發出來的,類似於營業執照

1.2   信任關係說明

clip_image002

如上圖,APP可以是Web server或者其他的應用程序,PC代指瀏覽APP所提供服務的設備包括電腦手機等設備。PC訪問APP時(ssl認證)需要驗證APP綁定的證書的真實性,而證書是由CA頒發的,此時PC只要信任CA即可,信任的方式爲將CA的自簽名證書加入到電腦的“受信任的證書頒發機構”。可以通過windows的控制檯或者IE瀏覽器中的設置查看電腦信任了哪些CA,如下查看方式

打開”internet選項”—“內容”---“證書”---“受信任的根證書頒發機構”可以看到微軟已經幫我們信任好了一些公共的CA。

clip_image004

一般找這裏面列出來的CA組織申請證書都是需要費用的,所以大家經常會在訪問網頁時會發現安全證書的警告,這個一般是組織內部CA頒發的或者是自簽名證書。自簽名證書就是通過將CA與APP所在的服務器合二爲一的方式實現的。

#上面的操作是windows系統,如果是RedHat系統可以使用如下方式添加對CA的信任

cat [根證書文件] >> /etc/pki/tls/certs/ca-bundle.crt

2     證書在windows服務中的具體使用方式

由於作者前期是從事Windows運維相關的工作,先簡單介紹一下CA在windows AD中的應用。

在AD環境中一般會需要架設一臺CA供其他需要證書加密的服務使用,CA架設(集成AD架設的方式)完成之後域中的所有windows設備都會自動信任該CA,域中的所有設備和所有用戶都可以向CA申請證書。申請證書的方式有兩種,一種是登錄CA提供的網頁申請,另一種如下:

“開始”---“運行”---“輸入mmc回車”---“文件”---“添加刪除管理單元”---“證書”如下圖

clip_image006

可以使用用戶或者主機的名義去申請,這裏選擇我的用戶賬戶

clip_image008

右鍵“個人”---“所有任務”---“申請新證書”點擊下一步

clip_image010

在這個界面需要在CA端定義了註冊策略之後,這裏就會顯示註冊策略,選擇相應的註冊策略之後申請就會被提交到CA,在CA端進行證書頒發之後在證書這一列就會顯示出來證書了

clip_image012

這裏就簡單的介紹了一下windows AD環境中的證書申請方法,如果CA是使用第三方工具如openssl等工具搭建的,具體的操作方法也可能會有一些差異

3     Openssl實現CA體系的操作方法

3.1   使用自簽名證書自建CA(在CA端操作)

#創建私鑰

openssl genrsa -out cakey.pem 4096 

#使用上面的私鑰創建證書,這個證書被稱爲根證書,一臺電腦將這個證書導入到“受信任的根證書頒發機構”後就相當於信任的這個CA

openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650

3.2   在客戶端生成證書申請文件(在APP端操作)

#生成私鑰

openssl genrsa -out app.key 4096

#生成證書申請文件,實際上是生成了一個自簽名證書,只是後面需要拿給CA簽名

openssl req -new -x509 -key app.key  -out app.csr -days 3650

3.3   在CA端頒發證書

#將上一步生成的私鑰拷貝到CA端,執行如下操作

openssl ca -in httpd.csr -out httpd.crt -days 3650

#證書生成完成後可以通過如下命令查看證書

Openssl x509 -in httpd.crt -noout -serial -subject

3.4   具體案例測試

3.4.1 環境介紹

Centos18CA

Centos19:運行了nginx,並開啓ssl模塊,向CA申請證書

Windows01:做實驗的windows電腦,命名爲windows01

3.4.2 Centos19安裝配置nginx

使用源碼安裝太麻煩,直接使用epel的yum源來安裝,如下yum源供參考,具體的安裝步驟就不多做介紹了

clip_image014

3.4.3 nginx使用自簽名證書啓用ssl認證

#創建私鑰

openssl genrsa -out httpd.key 1024 

#使用上面的私鑰創建證書

openssl req -new -x509 -key httpd.key -out httpd.crt -days 3650

將私鑰和證書的路徑填入/etc/nginx/nginx.conf中的如下字段,這些字段默認是註釋掉的,需要去掉註釋

clip_image016

3.4.4 使用windows01訪問測試---預期效果證書不信任

訪問https://centos19發現證書錯誤

clip_image018

查看證書詳情可以看到是由centos19自己頒發的證書,並且不受信任

clip_image020

3.4.5 windows01添加對自簽名證書的信任

添加信任可以直接將3.4.3中生成的證書拷貝到windows01中進行安裝,或者直接在網頁中查看證書時安裝(這種方式在有些情況下可能不適用)。下面介紹一下第二種方式

如圖查看證書,安裝證書---下一步

clip_image022

選擇存儲位置爲“受信任的根證書頒發機構”

clip_image024

安裝完成之後,就添加了對centos19的信任了

3.4.6 使用windows01訪問測試---預期效果證書信任

重新訪問網頁查看發現沒有報錯了

clip_image026

clip_image028

 

3.4.7 在centos18上創建CA

創建所需的目錄和文件,這些文件目錄的配置都在/etc/pki/tls/openssl.conf中定義

clip_image030

然後按照3.1中的方法創建CA的私鑰和證書如下

#創建私鑰

openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096 

#使用上面的私鑰創建證書,這個證書被稱爲根證書,一臺電腦將這個證書導入到“受信任的根證書頒發機構”後就相當於信任的這個CA

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

3.4.8 使用CA頒發證書並綁定到nginx

#在centos19上生成私鑰

openssl genrsa -out httpd.key 4096

#在centos19上生成證書申請文件

openssl req -new -key httpd.key -out httpd.csr -days 3650

#編輯nginx配置文件/etc/nginx/nginx.conf,將新申請的私鑰和證書綁定到nginx

clip_image031

使配置生效

Nginx -s reload

3.4.9 使用windows01訪問測試---預期效果證書不信任

訪問https://centos19發現證書不信任

clip_image033

查看證書發現證書是由centos18頒發給centos19的,證明是CA頒發的證書

3.4.10          windows01添加對CA(centos18)的信任

將3.4.7中CA生成的自簽名證書文件cakey.pem拷貝到windows01上,但是需要將後綴名修改爲crt,將這個證書文件導入到“受信任的根證書頒發機構”

打開這個文件並導入,如下圖可以看出該根證書文件的確是由CA(centos18)頒發給自己的。

clip_image035

做完該操作之後就信任了CA了,以後CA頒發的所有證書都不用再單獨做信任關係了。

3.4.11          使用windows01訪問測試---預期效果證書信任

完成上一步操作之後,再次訪問頁面已經沒有證書警告了

clip_image037


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章