在nginx、pem、bundle、crt上安裝godaddy ssl證書
通過可用的說明和論壇文章,有點不清楚如何處理從 Godaddy 購買 SSL 證書時從他們那裡獲得的三個文件。Godaddy並沒有很直接地解釋它。事後看來,現在當知道如何做到這一點時,人們可能會認為他們不在購買說明中詳細說明這一點是不明智的;因為讓它工作並非易事。
在 GoDaddy 購買標準 SSL 證書 (Starfield SHA-2) 或 (Godaddy SHA-2) 時。您指明您擁有的伺服器類型並下載 zip 包。在此過程中,您還下載了兩個 txt 文件。
對於 Nginx,您指定伺服器類型“其他”,並且您的 zip 文件包含 3 個文件 (1-3)。在此過程中,還創建了另外兩個文件(4-5),分別保存:
- 3423l4kj23l4j.crt
- 3423l4kj23l4j.pem
- sf_bundle-g2-g1.crt
- 生成的私鑰.txt
- 生成-csr.txt
在記事本中打開時,上面的1和2是相同的
'-----BEGIN CERTIFICATE----- MM123XXXXXX XXXXXXXO8km -----END CERTIFICATE-----'
sf_bundle-g2-g1.crt
上面不包含 1 或 2,而是三個單獨的條目'-----BEGIN CERTIFICATE----- XXXX1 XXXX2 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- XXXX3 XXXX4 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- XXXX5 XXXX6 -----END CERTIFICATE-----'
generated-private-key.txt
是獨特的'-----BEGIN PRIVATE KEY----- XXXX7 XXXX8 -----END PRIVATE KEY-----'
最後,
generated-csr.txt
, 也是唯一的'-----BEGIN CERTIFICATE REQUEST----- XXXX9 XXXX0 -----END CERTIFICATE REQUEST-----'
在 Nginx 中:
- 我創建了一個文件夾,
/etc/nginx/ssl
- 我編輯
/etc/nginx/sites-enabled/default.conf
如下;
server { listen 80 default_server ; listen [::]:80 default_server ;
我已將其更改為:
server { listen 443 ssl ; listen [::]:443 ssl ; server_name example.com; ssl_certificate /etc/nginx/ssl/ ?????????.crt; ssl_certificate_key /etc/nginx/ssl/ ???????.key;
因為我有點不清楚什麼是什麼,以及 pem 和 bundle 是什麼,我想問哪些解壓縮的文件放在哪裡?:
ssl_certificate
= crt、pem、bundle、gen_crt?ssl_certificate_key
= pem 還是私鑰?更新 我按照@nikita-kipriyanov 的建議做了,這行得通。
- 組合/連接方式:
3423l4kj23l4j.pem sf_bundle-g2-g1.crt > fullchain.pem
這將成為ssl_certificate
文件- 將其重命名
generated-private-key.txt
為privkey.pem
文件,然後更改它的文件編碼:sudo iconv -c -f UTF8 -t ASCII privkey.pem >> privkey.pem
這將成為ssl_certificate_key
文件
這取決於捆綁包中的內容。我確定它包含到受信任 CA 的證書路徑,問題是:它是否還包括終端伺服器證書(它是 Let’s Encrypt 的“完整鏈”)或不(“鏈”)?另外,哪個文件包含私鑰?
您可以通過簡單地使用文本查看器(記事本等)並比較內容來手動檢查,因為 PEM 格式的包只不過是 Base64 形式的所有證書,從伺服器開始連接,然後是其頒發者 CA,等等。
-----BEGIN CERTIFICATE-----
您還可以將任何以開頭的證書-----END CERTIFICATE-----
(包括這兩個特殊行)剪切成專用文件並使用openssl x509 -in file.pem -noout -text
. 這樣您就可以確切地知道捆綁包中有哪些證書。如果 PEM 格式的文件包含類似的內容
-----BEGIN PRIVATE KEY----
,請勿與任何人共享,請保密!所有僅包含證書且僅包含
-----BEGIN CERTIFICATE-----
在其中的文件都是公開的。您可以安全地向任何人展示它們(事實上,因為伺服器在 SSL 會話啟動步驟中將這些證書發送給客戶端)。如果您的捆綁包已經包含一個完整的鏈(即以終端伺服器證書開頭),那麼所有工作都已為您完成並跳過以下步驟。
但是,如果它不包含完整的鏈,則您必須自己將其連接起來(看來這是您的情況):
cat server.crt bundle.pem > fullchain.pem
現在,只需將其傳遞給 Nginx:
ssl_certificate fullchain.pem; ssl_certificate_key privkey.pem;
有關詳細資訊,請參閱Nginx 手冊。