SSL 憑證申請流程
關於 SSL 憑證有很多價格區間,甚至還有網站提供免費的 SSL 服務,像是 Let’s Encrypt 或 SSL For Free 都是免費 SSL 服務的供應商,聽起來用免費的 SSL 憑證就好了幹嘛選擇付費的 SSL 憑證呢?
其實免費的 SSL 憑證缺點除了需要週期性更換之外 (例如 Let’s Encrypt 需要每 90 天手動更換一次憑證),還有對於使用者的賠償機制,SSL 價格影響最大的是 SSL 帶來的公信力與賠償機制,SSL 認證的級別越高就越有公信力,相對的賠償金額也更高。
目前網域最常用的認證類性為 OV (組織認證),另外還有 DV (域名認證)以及 EV (延伸認證)等認證種類,DV 是最容易入手的認證方式,價格便宜、手續簡單,是個人網站或部落格常用類型。
比較不一樣的是 EV 認證,EV 認證規範比較嚴格,價格也比較高,但是可以讓網站顯示公信力的象徵綠色標章 (Green Bar),通常大型機關都是使用 EV 類型的認證。
SSL 憑證檔案
憑證公鑰 server.crt 檔案內容:BEGIN CERTIFICATE 、END CERTIFICATE
憑證私鑰 server.key 檔案內容 :BEGIN RSA PRIVATE KEY、END RSA PRIVATE KEY
中繼憑證 server.csr 檔案內容:連續三組BEGIN CERTIFICATE、END CERTIFICATE
SSL 憑證申請流程
- 產生憑證私鑰 server.key:openssl genrsa -out server.key 2048,產生後視窗會顯示 Enter PEM pass phase:確定是否要設定私鑰匙密碼,這會用在啟用憑證,不輸入則直接 enter
- 產生中繼憑證 server.csr:openssl req -new -key server.key -out server.csr,這行指令會要求輸入申請資訊
Country Name:TW
State or Province Name:按 enter 略過
Locality Name:城市(如:Tainan)
Organization Name:組織名稱(如:CHT)
Organizational Unit Name:單位名稱(如:Information)
Common name:網域名稱(如:test.com)
Email address:伺服器管理者電子郵件 (如:test@gmail.com)
challenge password:按 enter 略過
optional company name:按 enter 略過 - 檢查中繼憑證 openssl req -noout -text -in server.csr
- 接下來就等憑證中心將憑證公鑰 server.crt 發給你
- 在 httpd.conf 將憑證檔案路徑對應起來
SSLEngine On
SSLCertificateFile <檔案路徑>/server.crt
SSLCertificateKeyFile <檔案路徑>/server.key
SSLCertificateChainFile <檔案路徑>/ca.csr
* windows憑證私鑰不可加密
其他指令
輸出 .pfx 憑證
openssl pkcs12 -in server.pfx -nokeys -password “pass:vEryComPleXPw” -out — 2>nul | openssl x509 -out server.crt
可選參數
-nokeys 代表你不要輸出 私密金鑰檔 (僅輸出憑證檔案)
-nocerts 代表你不要輸出 伺服器憑證檔 (僅輸出金鑰檔案)
-nodes 是 No DES 的意思,代表你想輸出一個沒有密碼保護的 私密金鑰檔
轉換 .cer 憑證
openssl x509 -in server.cer -inform DER -out server.crt
驗證憑證,這三行指令輸出的內容將會相同
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
檢查憑證
openssl verify server.crt
查看 crt
openssl x509 -in server.crt -text -noout
查看 cer
openssl x509 -in server.cer -inform DER -text -noout
查看 private key
openssl rsa -in server.key -text -noout
查看 csr
openssl req -in server.csr -text -noout
查看、檢查 csr 內容
openssl req -in server.csr -text -verify -noout
檢查 csr 與 private key
openssl req -in server.csr -noout -verify -key server.key
檢查 private key
openssl rsa -noout -text -check -in server.key
檢查 server.pfx
openssl pkcs12 -info -in server.pfx
檢查 server.jks
keytool -v -list -storetype jks -keystore server.jks -storepass 123456