2020/11/13

SSL Common Knowledge

網站掛上 SSL 已經是基本要求了,市面上也很多免費產品,像是 let’s encryptcloudflare 等等,這些服務都可以透過簡單的設定或申請讓你的網站擁有 SSL,不過還是不乏會有自己花錢購買憑證的需求,此文記錄一些重點事項。

申請流程需要生成兩個檔案

  1. 私有金鑰 – private key
  2. 簽署要求 – 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 與 中繼憑證 | 哈部落

沒有留言: