1. 程式人生 > >創建用私鑰簽名的證書

創建用私鑰簽名的證書

客戶端和服務器端 markdown 服務 -o mas key arch alt say

生成證書文件

1.為服務器端和客戶端準備公鑰、私鑰

  • 生成服務器端私鑰

    openssl genrsa -des3 -out server.key 2048

    -des3代表加上了加密,後面的2048是代表生成的密鑰的位數,1024已經不是很安全

  • 生成服務器端公鑰

    openssl rsa -in server.key -pubout -out server.pem
  • 生成客戶端私鑰

    openssl genrsa -des3 -out client.key 2048
  • 生成客戶端公鑰

    openssl rsa -in client.key -pubout -out client.pem

1.生成 CA 機構證書

  • 生成 CA 私鑰

    openssl genrsa -des3 -out ca.key 2048
  • 生成證書請求

     # X.509 Certificate Signing Request (CSR) Management.
    openssl req -new -key ca.key -out ca.csr
  • 使用私鑰為證書請求簽名,生成給服務器簽署的證書,格式是x509的PEM格式

    # X.509 Certificate Data Management.
    openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -outform pem  -days 3650
    #-outform pem指定證書生成的格式,默認是pem,所以這個命令也可以寫作成
    #-days 3650 指10年有效 #也可以 openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt

生成服務器端證書

  • 服務端向CA生成證書請求

    # 服務器端需要向 CA 機構申請簽名證書,在申請簽名證書之前依然是創建自己的 CSR 文件
    openssl req -new -key server.key -out server.csr
    # 向自己的 CA 機構申請證書,簽名過程需要 CA 的證書和私鑰參與,最終頒發一個帶有 CA 簽名的證書
    openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
  • 生成cer文件

    #使用openssl 進行轉換
    openssl x509 -in server.crt -out server.cer -outform der

簡述 HTTPS 的運作

技術分享圖片

主要過程:

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

參考:

  • 關於HTTPS握手流程
  • Mac OS X 啟用 Web 服務器
  • 自簽名https證書
  • HTTPS證書生成原理和部署細節

創建用私鑰簽名的證書