openssl生成https

https運做流程:html

HTTPS交互

  • 客戶端生成一個隨機數 random-client,傳到服務器端(Say Hello)
  • 服務器端生成一個隨機數 random-server,和着公鑰,一塊兒回饋給客戶端(I got it)
  • 客戶端收到的東西原封不動,加上 premaster secret(經過 random-client、random-server 通過必定算法生成的東西),再一次送給服務器端,此次傳過去的東西會使用公鑰加密
  • 服務器端先使用私鑰解密,拿到 premaster secret,此時客戶端和服務器端都擁有了三個要素:random-client、random-server 和 premaster secret
  • 此時安全通道已經創建,之後的交流都會校檢上面的三個要素經過算法算出的 session key

        .key格式:私有的密鑰
        .csr格式:證書籤名請求(證書請求文件),含有公鑰信息,certificate signing request的縮寫
        .crt格式:證書文件,certificate的縮寫
        .crl格式:證書吊銷列表,Certificate Revocation List的縮寫
        .pem格式:用於導出,導入證書時候的證書的格式,有證書開頭,結尾的格式git

 

ca根證書:算法

生成CA私鑰(.key)-->生成CA證書請求(.csr)-->自簽名獲得根證書(.crt)(CA給自已頒發的證書)。安全

  1. # Generate CA private key   
  2. openssl genrsa -out ca.key 2048   
  3. # Generate CSR   
  4. openssl req -new -key ca.key -out ca.csr  
  5. # Generate Self Signed certificate(CA 根證書)  
  6. openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt  

用戶證書生成步驟: 生成私鑰(.key)-->生成證書請求(.csr)-->用CA根證書籤名獲得證書(.crt)服務器

服務器端用戶證書:session

  1. # private key  
  2. $openssl genrsa -des3 -out server.key 1024   
  3. # generate csr  
  4. $openssl req -new -key server.key -out server.csr  
  5. # generate certificate  
  6. $openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key 

Organization Name (eg, company) [Internet Widgits Pty Ltd]: ca,服務端,客戶端寫成不同便可dom

Common Name (e.g. server FQDN or YOUR name) []: 填寫生成證書的域名加密

 

客戶端證書:.net

  1. $openssl genrsa -des3 -out client.key 1024   
  2. $openssl req -new -key client.key -out client.csr  
  3. $openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key  

 

生成pem格式證書: 
有時須要用到pem格式的證書,能夠用如下方式合併證書文件(crt)和私鑰文件(key)來生成 server

$cat client.crt client.key> client.pem 

$cat server.crt server.key > server.pem

結果:

服務端證書:ca.crt, server.key, server.crt, server.pem

客戶端證書:ca.crt, client.key, client.crt, client.pem

注意:

在執行$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key時可能會出錯:

Using configuration from /usr/share/ssl/openssl.cfg I am unable to access the ./demoCA/newcerts directory ./demoCA/newcerts: No such file or directory 

解決方法:

1)mkdir -p ./demoCA/newcerts 
2)touch demoCA/index.txt 
3)touch demoCA/serial 
4)echo 01 > demoCA/serial

 

參考:https://blog.csdn.net/moonhillcity/article/details/52768218

https://www.cnblogs.com/liyulong1982/p/6106129.html

相關文章
相關標籤/搜索