Nginx

在nginx、pem、bundle、crt上安裝godaddy ssl證書

  • October 17, 2021

通過可用的說明和論壇文章,有點不清楚如何處理從 Godaddy 購買 SSL 證書時從他們那裡獲得的三個文件。Godaddy並沒有很直接地解釋它。事後看來,現在當知道如何做到這一點時,人們可能會認為他們不在購買說明中詳細說明這一點是不明智的;因為讓它工作並非易事。

在 GoDaddy 購買標準 SSL 證書 (Starfield SHA-2) 或 (Godaddy SHA-2) 時。您指明您擁有的伺服器類型並下載 zip 包。在此過程中,您還下載了兩個 txt 文件。

對於 Nginx,您指定伺服器類型“其他”,並且您的 zip 文件包含 3 個文件 (1-3)。在此過程中,還創建了另外兩個文件(4-5),分別保存:

  1. 3423l4kj23l4j.crt
  2. 3423l4kj23l4j.pem
  3. sf_bundle-g2-g1.crt
  4. 生成的私鑰.txt
  5. 生成-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 中:

  1. 我創建了一個文件夾,/etc/nginx/ssl
  2. 我編輯/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.txtprivkey.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 手冊

引用自:https://serverfault.com/questions/1080750