TLS 證書生成方法


TLS 證書生成方法

生成私鑰 ssl.key:

openssl genrsa -out ssl.key 2048

如果要對私鑰進行傳輸/備份,建議先對私鑰進行密碼加密:

openssl rsa -in ssl.key -des3 -out encrypted.key

利用私鑰就可以生成證書了。OpenSSL使用x509命令生成證書。這里需要區分兩個概念:證書(certificate)和證書請求(certificate sign request)

  • 證書是自簽名或CA簽名過的憑據,用來進行身份認證
  • 證書請求是對簽名的請求,需要使用私鑰進行簽名

x509命令可以將證書和證書請求相互轉換,不過我們這里只用到從證書請求到證書的過程

從私鑰或已加密的私鑰均可以生成證書請求。生成證書請求 ssl.csr 的方法為:

openssl req -new -key ssl.key -out ssl.csr

如果私鑰已加密,需要輸入密碼。req命令會通過命令行要求用戶輸入國家、地區、組織等信息(也可以直接指定命令參數提供),這些信息會附加在證書中展示給連接方。

接下來用私鑰對證書請求進行簽名。根據不同的場景,簽名的方式也略有不同,一般有兩種

自簽

自簽名的原理是用私鑰對該私鑰生成的證書請求進行簽名,生成證書文件。該證書的簽發者就是自己,所以驗證方必須有該證書的私鑰才能對簽發信息進行驗證,所以要么驗證方信任一切證書,面臨冒名頂替的風險,要么被驗證方的私鑰(或加密過的私鑰)需要發送到驗證方手中,面臨私鑰泄露的風險。

當然自簽名也不是一無用處,比如需要內部通訊的兩台電腦需要使用加密又不想用第三方證書,可以在兩端使用相同的私鑰和證書進行驗證(當然這樣就跟對稱加密沒有區別了)
自簽名的方法為:

openssl x509 -req -in ssl.csr -signkey ssl.key -out ssl.crt

同樣如果ssl.key已加密,需要輸入密碼。

  • 配置簡單的 nginx tls 證書可以使用這個方式

CA 簽

CA證書是一種特殊的自簽名證書,可以用來對其它證書進行簽名。這樣當驗證方選擇信任了CA證書,被簽名的其它證書就被信任了。在驗證方進行驗證時,CA證書來自操作系統的信任證書庫,或者指定的證書列表。K8S 集群RBAC權限認證就使用這種模式。

生成自簽名證書的方法為:

openssl x509 -req -in sign.csr -extensions v3_ca -signkey sign.key -out sign.crt

使用CA證書對其它證書進行簽名的方法為:

openssl x509 -req -in ssl.csr -extensions v3_usr -CA sign.crt -CAkey sign.key -CAcreateserial -out ssl.crt

花錢購買證書機構的簽名
利用上述方法,受信任的機構就可以用自己的私鑰(sign.key)對其他人的證書進行簽名。我們看到,只需要把證書請求(ssl.csr)發給證書機構,證書機構就可以生成出簽名過的證書(ssl.crt)。目前購買證書簽名服務的價格大約為100-400元/年。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM