數字證書的理解以及自建CA機構頒發證書

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根證書
      
 
 
5:在瀏覽器輸入地址訪問
      
      
     能夠看到是沒有問題的,這是火狐瀏覽器,用谷歌瀏覽器的話會提示這不是安全連接
 
      
客戶端與服務端的交互過程以下:
1:客戶端對域名lile.captain.com發起請求的時候,服務端會先把這個域名對應的證書文件發送給客戶端
2:客戶端接收到這個域名的證書文件,而後使用本身瀏覽器裏給域名lile.captian.com頒發證書的CA根證書裏CA公鑰,對lile.captain.com這個域名證書文件進行解密,獲得這個證書的hash值以及hash算法,客戶端用hash算法對證書作一次hash,取得hash值與以前解密獲得的hash值進行對比,同樣說明此證書文件沒有被更改過,而後客戶端就能夠使用證書裏的公鑰和服務端進行通訊了
3:客戶端會隨機生成一個字符串發送給服務端,服務端用私鑰加密發送給客戶端,而後客戶端用公鑰解密,若是是的就認爲對方是服務端
4:而後客戶端隨機生成對稱密鑰,並把對稱密鑰和生成對稱密鑰的算法用公鑰加密發送給服務端
5:服務端獲得後,用本身的私鑰解密,而後服務端和客戶端就開始了用堆成密鑰通訊的過程了
6:......通訊......
 
相關博客
相關文章
相關標籤/搜索