如何產生自簽署 OpenSSL 證書
1. 產生私鑰 pem
通過這個指令可以直接產出來
openssl genpkey -algorithm RSA -out private_key.pem
2. 憑證請求 csr (Certificate Signing Request)
openssl req -new -key private_key.pem -out request.csr
這邊其實很多資訊可以跳過,只是要注意的是網域不能亂填
3. 簽署該請求 cer/crt
openssl x509 -req -days 365 -in request.csr -signkey private_key.pem -out certificate.cer
這邊簽署本來應該是由CA做的,簽署用的私鑰可以是其他私鑰,只是方便用同一個
4. 打包成 pfx 檔案
openssl pkcs12 -export -out certificate.pfx -inkey private_key.pem -in certificate.cer
最後一個步驟是把簽署完畢的 cer 檔案跟原本的私鑰合併成完整的證書
到這邊就完成了,最後注意一下自簽證書存放在 Store 的位置,要放到
【客戶端:: /本機/受信任的憑證授權單位】這個位置才能起作用
私鑰也就是那個 pfx 沒影響放哪都行,不過建議放到
【伺服端:: /本機/個人】比較好找
檔案關係圖
最後整理一下各個檔案的關係,提示一下上面的教學因為是自簽的所以用同一份私鑰,實際上整個過程是會出現兩份私鑰的。
證書的生成關係圖 (私鑰不會保留在這裡僅參與簽名)
certificate.cer # 最終生成的證書,包含公司公鑰及 CA 的數字簽名
├─ private_key_ca.pem # CA 私鑰:用於簽署 CSR 請求(不會儲存在證書中)
└─ request.csr # 證書簽署請求:包含公司公鑰及簽署的公司識別信息
├─ private_key_company.pem # 公司私鑰:用於簽署公司識別信息(不會儲存在請求中)
└─ information.txt # 公司識別信息:包含組織名稱、域名等
最後再將CA簽署後的文件,也就是證書公鑰跟自己私鑰合併打包就成了 pfx 檔案了
最終只要保留兩份檔案就好
- certificate.cer # 證書公鑰
- certificate.pfx # 證書私鑰
簽名本質上就是使用私鑰對一串文本進行加密,最後再將兩者組合起來,例如 "{明文文本}{加密後哈希}"
這個簽名可以使用對方提供的公鑰驗證,對哈希值解密可以得到相同的明文。藉此證明這段信息確實是由對方發出的
證明是利用的是非對稱加密的特性,該哈希值只能由另一把鑰匙生成,沒有別的方法了
上面只能證明這個信息是由google傳的,如果要證明你連接的對方是真正的google而不是假冒的第三方,就用公鑰加密一段信息然後丟過去讓對方解密,解出之後對答案就能知道了
沒有留言:
張貼留言