2023年10月13日 星期五

如何產生自簽署 OpenSSL 證書

如何產生自簽署 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而不是假冒的第三方,就用公鑰加密一段信息然後丟過去讓對方解密,解出之後對答案就能知道了



參考文獻

  1. CHG: MSSQL 2022 如何創建 自簽署SSL憑證證書 導入並啟用加密連接
  2. CHG: MSSQL 2022 快速建構 自簽署SSL證書







沒有留言:

張貼留言