1、理解什麼是數字證書
理解數字證書等概念,無數次想好好看看數字證書,CA什麼的,都沒看懂,直到昨天看到了這篇博文,基本上是理解了
2、阿里雲證書的CA證書使用狀況
好比我在阿里雲申請了一個域名lile.capatain.com,而後我要實現對這個域名能實現https,那麼該怎麼辦呢?
阿里雲的文檔
1)首先去阿里雲購買一個證書(在雲盾那裏),付錢以後才填寫資料
2)而後補全資料
填寫域名
填寫我的信息
企業組織信息
上傳相關信息:(重要的是這一步)
這裏須要生成CSR證書請求文件,阿里雲的有兩種選擇,一種是系統生成CSR方式,一種是本身生成CSR,使用他的系統生成CSR方式,將自動生成證書和私鑰,而且在證書申請成功後可直接在證書管理列表中下載證書和私鑰
3)待審覈經過後,就能夠管理本身的證書列表了,使用了,如nginx,apache等。
3、本身扮演CA機構簽發證書
由於我如今不須要真正的買一個CA證書,因此就本身當CA機構模擬一下,而後給本身的服務器頒發證書
這裏模擬需分清楚兩個角色:CA證書頒發機構、服務器申請方
CA證書頒發機構:
CA機構
本身扮演CA角色,必須準備好CA機構相關的文件:CA私鑰、CSR證書請求文件,根據這兩個生成CA根證書
1:生成CA證書私鑰
openssl genrsa -out server.key 1024
2:生成CSR文件
openssl req -new -key ca.key -out ca.csr
3:命令行生成CA根證書
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
以上是CA機構的文件準備完畢,下面爲HTTPS服務器頒發證書
服務器申請方:
申請數字證書以前,必須準備好證書私鑰和證書請求文件CSR(Certificate Signing Request,簡稱CSR)。CSR文件是公鑰證書原始文件,裏面包含了申請者的基本信息,如Common Name、Organization,同時也包含了申請者的公鑰,須要提交給CA認證中心進行審覈
手動生成CSR文件通常須要填寫的信息:
• Organization Name(O): 申請單位名稱法定名稱,能夠是中文或英文。
• Organization Unit(OU): 申請單位的所在部門,能夠是中文或英文。
• Country Code(C): 申請單位所屬國家,只能是兩個字母的國家碼。如:中國只能是 CN。
• State or Province(S): 申請單位所在省名或州名,能夠是中文或英文。
• Locality(L): 申請單位所在城市名,能夠是中文或英文。
• Common Name(CN): 申請SSL證書的具體網站域名。
1)使用OPENSSL生成私鑰
openssl genrsa -out server.key 1024
2)生成CSR證書請求文件:
openssl req -new -key server.key -out server.csr
準備工做所有作好以後,自建的CA機構就能夠根據服務器提供的證書請求文件CSR頒發證書了
openssl x509 -req -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
4、nginx測試
這樣證書頒發就完成了,也就是server.crt這個文件,接下來假如到nginx作測試:
1:使用這個功能的模塊ngx_http_ssl_module
這個模塊並非默認就有的,必須得在安裝編譯的時候指定(--with-http_ssl_module),編譯纔有
2:這個模塊要求Openssl
3:修改配置文件
server_name lile.captain.com;
listen 443 ssl;
ssl_certificate /root/test/ca/server.crt;
ssl_certificate_key /root/test/ca/server.key;
打開ssl,建議使用listen 443 ssl,而不是ssl on;
4:在瀏覽器的安全選項裏,導入CA根證書
能夠看到是沒有問題的,這是火狐瀏覽器,用谷歌瀏覽器的話會提示這不是安全連接
客戶端與服務端的交互過程以下:
1:客戶端對域名lile.captain.com發起請求的時候,服務端會先把這個域名對應的證書文件發送給客戶端
2:客戶端接收到這個域名的證書文件,而後使用本身瀏覽器裏給域名lile.captian.com頒發證書的CA根證書裏CA公鑰,對lile.captain.com這個域名證書文件進行解密,獲得這個證書的hash值以及hash算法,客戶端用hash算法對證書作一次hash,取得hash值與以前解密獲得的hash值進行對比,同樣說明此證書文件沒有被更改過,而後客戶端就能夠使用證書裏的公鑰和服務端進行通訊了
3:客戶端會隨機生成一個字符串發送給服務端,服務端用私鑰加密發送給客戶端,而後客戶端用公鑰解密,若是是的就認爲對方是服務端
4:而後客戶端隨機生成對稱密鑰,並把對稱密鑰和生成對稱密鑰的算法用公鑰加密發送給服務端
5:服務端獲得後,用本身的私鑰解密,而後服務端和客戶端就開始了用堆成密鑰通訊的過程了
6:......通訊......
相關博客