創建用私鑰簽名的證書
阿新 • • 發佈:2017-12-25
客戶端和服務器端 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,所以這個命令也可以寫作成
生成服務器端證書
服務端向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證書生成原理和部署細節
創建用私鑰簽名的證書