一般在 IIS 上啟用 https 的步驟很簡單:先匯出憑證要求,接著在收到憑證之後完成憑證要求,在站台上設定新的繫結,將 443 指定到申請的憑證上的域名即可。
但是,利用 IIS 去向中華電信所申請到的憑證格式為 .cer
,在 Nginx 的官網中,使用的卻是 .crt
格式,並且還多了一個一般流程中不會看到的 .key
。網路上的教學大多是直接使用 openssl
去生產憑證,由於這個案子是已經有申請好的憑證,所以我們要透過一些方法來把申請到的憑證轉成 Nginx 可以使用的格式。
在 Nginx 中使用 cer
來設定 https
可以在上面那張圖片中觀察到,有兩個地方的值是粗體的黑字:ssl_certificate
和 ssl_certificate_key
,這兩個部分要放的就是憑證的檔案和憑證的私密金鑰。而在這裡會有兩個問題:
- 如果是利用 IIS 去產生憑證要求所申請到的憑證,會沒有辦法直接得到私密金鑰,因為他會是加密過後的內容,而 Nginx 要求是不能加密的檔案。
- 申請所得到的憑證
.cer
沒有辦法直接使用在 Nginx 上。
在看這些問題之前,要先了解一下這幾個檔案的用途和差別:
名稱 | 用途 | 說明 |
---|---|---|
crt | 憑證證書 | Lunix 系統上的檔案格式 |
cer | 憑證證書 | Windows 系統上的檔案格式 |
key | 金鑰 | 存放公鑰或私鑰 |
pfx | 憑證證書及私鑰 | Windows 系統上會把 crt 和私鑰 key 放在同一個檔案內,需要有密碼才能提取 |
了解了這幾種不同的名詞之後,接下來就是要把我們手上有的 cer
憑證檔案轉換成 Nginx 可以接受的格式。
1. 匯出 pfx
檔案
第一個步驟,是要藉由 cer
來取得包含憑證證書和私鑰的 pfx
檔案。
Windows + R
開啟 執行,輸入mmc
檔案 > 新增或移除嵌入式管理單元
,拉到最底下找到憑證
,點選後點擊中間的新增,會跳出另外一個視窗,選擇電腦帳戶 > 本機電腦
,按下完成後視窗會回到嵌入式管理單元
這一層,確定憑證有被移動到右邊的視窗後就可以按下確定。
- 在憑證的目錄底下選擇
個人>憑證
,如果有先在 IIS 完成憑證要求的話就可以看到原本匯入的憑證,沒有的話請先匯入。找到要匯出pfx
檔案的憑證對他點選右鍵 > 所有工作 > 匯出
,選擇是,匯出私密金鑰
,點選兩次下一步進入安全性
的頁面,輸入要存取pfx
時的密碼。下一步輸入檔名後按下儲存就可以得到pfx
檔案了。
2. 轉成 crt
檔案
有了 pfx
的下一步就是要轉換成 crt
和 key
。轉換的方法很簡單,使用 openssl
,輸入下面的指令,就可以得到這兩個檔案了:
|
|
3. 修改 nginx.conf
產出兩個檔案之後就可以進入 nginx.conf
的修改了。修改好記得要 nginx -s reload
,防火牆 443 port 的部分也要記得開:
|
|
參考資料