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

目錄nginx

1     CA架構說明windows

1.1      名詞說明centos

1.2      信任關係說明瀏覽器

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

3     Openssl實現CA體系的操做方法服務器

3.1      使用自簽名證書自建CA(在CA端操做)架構

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

3.3      在CA端頒發證書運維

3.4      具體案例測試ide

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頒發的或者是自簽名證書。自簽名證書就是經過將CAAPP所在的服務器合二爲一的方式實現的。

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

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

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

因爲做者前期是從事Windows運維相關的工做,先簡單介紹一下CAwindows 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

使用源碼安裝太麻煩,直接使用epelyum源來安裝,以下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.7CA生成的自簽名證書文件cakey.pem拷貝到windows01上,可是須要將後綴名修改成crt,將這個證書文件導入到「受信任的根證書頒發機構」

打開這個文件並導入,以下圖能夠看出該根證書文件的確是由CA(centos18)頒發給本身的。

clip_image035

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

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

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

clip_image037

相關文章
相關標籤/搜索