網站掛上 SSL 已經是基本要求了,市面上也很多免費產品,像是 let’s encrypt、cloudflare 等等,這些服務都可以透過簡單的設定或申請讓你的網站擁有 SSL,不過還是不乏會有自己花錢購買憑證的需求,此文記錄一些重點事項。
申請流程需要生成兩個檔案
- 私有金鑰 – private key
- 簽署要求 – certificate signing request (CSR)
CSR 產生後上繳給 SSL 販賣廠商,完成後他會返回憑證以及中繼憑證,只要有 key、crt、以及 ca 就可以配置 apache 跟 nginx 了。
產生 key 與 csr
key 跟 csr 可以一起產生或者分開產生
一起產生
openssl req -nodes -newkey rsa:2048 -sha256 -keyout server.key -out server.csr
CSR 會詢問很多問題,必須填寫正確,否則之後使用會有問題
分開產生
先產生了 key
openssl genrsa -out server.key 2048
透過 key 產生 csr
openssl req -new -key server.key -out server.csr
利用 key 與 csr 產生 crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
憑證轉碼
憑證下來以後,大部分會拿到兩種檔案,一種是 cer,一種是 pfx,pfx 就是帶有私鑰的證書文件,多半會拿到的是 cer,用他來解出 crt。
cer -> crt
openssl x509 -in server.cer -out server.crt -inform DER
pfx -> crt and ca
openssl pkcs12 -in server.pfx -nokeys -out server.crt -nodes -password pass:123456
pfx -> key
openssl pkcs12 -in server.pfx -nocerts -out server.key -nodes -password pass:123456
驗證證書內容
openssl pkey -in server.key -pubout -outform pem | sha256sum
openssl x509 -in server.crt -pubkey -noout -outform pem | sha256sum
openssl req -in server.csr -pubkey -noout -outform pem | sha256sum
正常來說這三個檔案的 sha 值要相同
檢查 private key
openssl rsa -noout -text -check -in server.key
有時候我們要確認一下 key 有沒有 passphrase,否則直接安裝後他問密碼我們不知道那 http server 會直接開不了,假設這組 key 有密碼,而你也知道密碼,我們可以產一個沒有密碼的 key 出來。
openssl rsa -in server.key -out server.no_password.key
參考資料
openssl 指令 command line - 轉檔 pem/der/p7b/pfx/cer | SSORC.tw
[SSL 基礎]私有金鑰、CSR 、CRT 與 中繼憑證 | 哈部落
沒有留言:
張貼留言