目錄nginx
1 CA架構說明windows
1.1 名詞說明centos
1.2 信任關係說明瀏覽器
3.4 具體案例測試ide
3.4.4 使用windows01訪問測試---預期效果證書不信任
3.4.6 使用windows01訪問測試---預期效果證書信任
3.4.9 使用windows01訪問測試---預期效果證書不信任
3.4.10 windows01添加對CA(centos18)的信任
3.4.11 使用windows01訪問測試---預期效果證書信任
CA:證書頒發機構,相似與工商局,專門發放證書的機構,只有獲得了CA頒發的證書應用才能正常對外提供服務
公鑰:顧名思義,公共的祕鑰,安全性要求不高,能夠共享出來給你們使用
私鑰:私有的祕鑰,只能本身使用,須要防止泄露
公鑰和祕鑰的關係:公鑰和祕鑰成對出現,互相認證,即個人公鑰加密的文件只能個人祕鑰解開,個人祕鑰加密的文件只能個人公鑰解開,每一個個體(能夠是用戶或者主機)均可以擁有一對。
證書:採用公鑰祕鑰的特性生成的一種文件,由CA頒發出來的,相似於營業執照
如上圖,APP能夠是Web server或者其餘的應用程序,PC代指瀏覽APP所提供服務的設備包括電腦手機等設備。PC訪問APP時(ssl認證)須要驗證APP綁定的證書的真實性,而證書是由CA頒發的,此時PC只要信任CA便可,信任的方式爲將CA的自簽名證書加入到電腦的「受信任的證書頒發機構」。能夠經過windows的控制檯或者IE瀏覽器中的設置查看電腦信任了哪些CA,以下查看方式
打開」internet選項」—「內容」---「證書」---「受信任的根證書頒發機構」能夠看到微軟已經幫咱們信任好了一些公共的CA。
通常找這裏面列出來的CA組織申請證書都是須要費用的,因此你們常常會在訪問網頁時會發現安全證書的警告,這個通常是組織內部CA頒發的或者是自簽名證書。自簽名證書就是經過將CA與APP所在的服務器合二爲一的方式實現的。
#上面的操做是windows系統,若是是RedHat系統可使用以下方式添加對CA的信任
cat [根證書文件] >> /etc/pki/tls/certs/ca-bundle.crt
因爲做者前期是從事Windows運維相關的工做,先簡單介紹一下CA在windows AD中的應用。
在AD環境中通常會須要架設一臺CA供其餘須要證書加密的服務使用,CA架設(集成AD架設的方式)完成以後域中的全部windows設備都會自動信任該CA,域中的全部設備和全部用戶均可以向CA申請證書。申請證書的方式有兩種,一種是登陸CA提供的網頁申請,另外一種以下:
「開始」---「運行」---「輸入mmc回車」---「文件」---「添加刪除管理單元」---「證書」以下圖
可使用用戶或者主機的名義去申請,這裏選擇個人用戶帳戶
右鍵「我的」---「全部任務」---「申請新證書」點擊下一步
在這個界面須要在CA端定義了註冊策略以後,這裏就會顯示註冊策略,選擇相應的註冊策略以後申請就會被提交到CA,在CA端進行證書頒發以後在證書這一列就會顯示出來證書了
這裏就簡單的介紹了一下windows AD環境中的證書申請方法,若是CA是使用第三方工具如openssl等工具搭建的,具體的操做方法也可能會有一些差別
#建立私鑰
openssl genrsa -out cakey.pem 4096
#使用上面的私鑰建立證書,這個證書被稱爲根證書,一臺電腦將這個證書導入到「受信任的根證書頒發機構」後就至關於信任的這個CA
openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
#生成私鑰
openssl genrsa -out app.key 4096
#生成證書申請文件,其實是生成了一個自簽名證書,只是後面須要拿給CA簽名
openssl req -new -x509 -key app.key -out app.csr -days 3650
#將上一步生成的私鑰拷貝到CA端,執行以下操做
openssl ca -in httpd.csr -out httpd.crt -days 3650
#證書生成完成後能夠經過以下命令查看證書
Openssl x509 -in httpd.crt -noout -serial -subject
Centos18:CA
Centos19:運行了nginx,並開啓ssl模塊,向CA申請證書
Windows01:作實驗的windows電腦,命名爲windows01
使用源碼安裝太麻煩,直接使用epel的yum源來安裝,以下yum源供參考,具體的安裝步驟就很少作介紹了
#建立私鑰
openssl genrsa -out httpd.key 1024
#使用上面的私鑰建立證書
openssl req -new -x509 -key httpd.key -out httpd.crt -days 3650
將私鑰和證書的路徑填入/etc/nginx/nginx.conf中的以下字段,這些字段默認是註釋掉的,須要去掉註釋
訪問https://centos19發現證書錯誤
查看證書詳情能夠看到是由centos19本身頒發的證書,而且不受信任
添加信任能夠直接將3.4.3中生成的證書拷貝到windows01中進行安裝,或者直接在網頁中查看證書時安裝(這種方式在有些狀況下可能不適用)。下面介紹一下第二種方式
如圖查看證書,安裝證書---下一步
選擇存儲位置爲「受信任的根證書頒發機構」
安裝完成以後,就添加了對centos19的信任了
從新訪問網頁查看發現沒有報錯了
建立所需的目錄和文件,這些文件目錄的配置都在/etc/pki/tls/openssl.conf中定義
而後按照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
#在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
使配置生效
Nginx -s reload
訪問https://centos19發現證書不信任
查看證書發現證書是由centos18頒發給centos19的,證實是CA頒發的證書
將3.4.7中CA生成的自簽名證書文件cakey.pem拷貝到windows01上,可是須要將後綴名修改成crt,將這個證書文件導入到「受信任的根證書頒發機構」
打開這個文件並導入,以下圖能夠看出該根證書文件的確是由CA(centos18)頒發給本身的。
作完該操做以後就信任了CA了,之後CA頒發的全部證書都不用再單獨作信任關係了。
完成上一步操做以後,再次訪問頁面已經沒有證書警告了