Nginx 從入門開始的網站架設 (3):https 設定
Nginx 從入門開始的網站架設
(1) - 基本設定(2) - Proxy Server
一般在 IIS 上啟用 https 的步驟很直覺,先匯出憑證要求,接著在收到憑證之後完成憑證要求,在站台上設定新的繫結,將 443 指定到申請的憑證上的域名即可。
但是,利用 IIS 去向中華電信所申請到的憑證格式為 .cer,在 Nginx 的官網中(如下圖),使用的卻是 .crt 格式,並且還多了一個一般流程中不會看到的 .key。而網路上的教學大多是直接使用 openssl 去生產憑證,對於已經有憑證的情況來說並沒有太大的幫助。

在 Nginx 中使用 cer 來設定 https
可以在上面那張圖片中觀察到,有兩個地方的值是粗體的黑字:ssl_certificate 和 ssl_certificate_key,這兩個部分要放的就是憑證的檔案和憑證的私密金鑰。而在這裡會有兩個問題:
- 如果是利用 IIS 去產生憑證要求所申請到的憑證,會沒有辦法直接得到私密金鑰,且 Nginx 要求是不能加密的檔案。
- 申請所得到的憑證 cer 沒有辦法直接使用在 Nginx 上。
在看這些問題之前,要先了解一下 cer pfx key crt 這幾個檔案的用途和差別。

了解了這幾種不同的名詞之後,接下來就是要把我們手上有的 cer 憑證檔案轉換成 Nginx 可以接受的格式。
匯出 pfx 檔案
第一個步驟,是要藉由 cer 來取得包含憑證證書和私鑰的 pfx 檔案。
Windows + R開啟 執行,輸入 mmc- 檔案 > 新增或移除嵌入式管理單元,拉到最底下找到 憑證,點選後點擊中間的新增,會跳出另外一個視窗,選擇 電腦帳戶 > 本機電腦,按下完成後視窗會回到 嵌入式管理單元 這一層,確定憑證有被移動到右邊的視窗後就可以按下確定。
- 在憑證的目錄底下選擇 個人>憑證,如果有先在 IIS 完成憑證要求的話就可以看到原本匯入的憑證,沒有的話請先匯入。找到要匯出
pfx檔案的憑證對他點選 右鍵 > 所有工作 > 匯出,選擇 是,匯出私密金鑰,點選兩次下一步進入 安全性 的頁面,輸入存取pfx時的密碼。下一步輸入檔名後按下儲存就可以得到pfx檔案了。


轉成 crt 檔案
有了 pfx 的下一步就是要轉換成 crt 和 key。轉換的方法很簡單,使用 openssl,輸入下面的指令,就可以得到這兩個檔案了:
# 輸出 crt
openssl pkcs12 -in server.pfx -clcerts -nokeys -out server.crt# 輸出 key
openssl pkcs12 -in server.pfx -nocerts -nodes -out server.rsa產出兩個檔案之後就可以進入 nginx.conf 的修改了:
修改好記得要 nginx -s reload,防火牆 443 port 的部分也要記得開。
參考資料:
Nginx 中使用 PFX 格式的 SSL 证书
crt、pem、pfx、cer、key 作用及區別