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


一、理解什么是數字證書
 
 
理解數字證書等概念,無數次想好好看看數字證書,CA什么的,都沒看懂,直到昨天看到了這篇博文,基本上是理解了
 
二、阿里雲證書的CA證書使用情況
 
比如我在阿里雲申請了一個域名lile.capatain.com,然后我要實現對這個域名能實現https,那么該怎么辦呢?
 
阿里雲的文檔
1)首先去阿里雲購買一個證書(在雲盾那里),付錢之后才填寫資料
 
2)然后補全資料
     填寫域名
     填寫個人信息
     企業組織信息
     上傳相關信息:(重要的是這一步)
      這里需要生成CSR證書請求文件,阿里雲的有兩種選擇,一種是系統生成CSR方式,一種是自己生成CSR,使用他的系統生成CSR方式,將自動生成證書和私鑰,並且在證書申請成功后可直接在證書管理列表中下載證書和私鑰
      
3)待審核通過后,就可以管理自己的證書列表了,使用了,如nginx,apache等。
 
三、自己扮演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
 
四、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:......通信......
 
相關博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM