[食譜好菜] 在 IIS 8.5 產生 CSR 申請憑證並匯入到 GCP 的 Load Balancing

HTTPS 協定已普及化了,甚至我們的網站如果沒有支援 HTTPS 的話,在搜尋引擎的排名還可能會被調降,本篇文章就在 IIS 8.5 躲藏在 GCP Load Balancing 背後的環境下,一步步去打通 HTTPS。

在 IIS 上產生 CSR(Certificate Signing Request)

首先我們必須產生一組 CSR 以提供用來申請 SSL 憑證使用,打開 IIS 管理介面在伺服器底下找到 Server Certificates 選項。

點擊 Create Certificate Request

填入 Distinguished Name Properties,尤其 Common name 要注意一下切勿亂打,我們實際上申請的網域是什麼就輸入什麼,如果是萬用網域的話就輸入 *.xxxyyy.com

填入 Cryptographic Service Provider Properties,我們的 SSL 憑證供應商建議 Bit length 至少要 2048,所以 Bit length 要選擇多少,就看我們的 SSL 憑證供應商有沒有額外說明。

接著把它存成 txt 檔案就可以了

申請 SSL 憑證

我們的 SSL 憑證供應商是去爸爸(GoDaddy),刷卡付款之後就照著它的官網說明把 CSR 提交上去,審核通過之後我們可以從它們的後台下載到 SSL 憑證。

產生 PEM 格式的私鑰

這個是待會兒要匯入 GCP Load Balancing 用的,我們在剛剛產生 CSR 檔案的 IIS 伺服器上打開 IIS 管理介面,一樣在 Server Certificates 選項裡面,點擊 Complete Certificate Request...

指定從 SSL 供應商那兒取得 .crt 檔案,並給它一個友善的名稱。

成功的話,就可以在 Server Certificates 列表中看得到。

再來執行 mmc,打開 Microsoft Management Console(MMC)

然後選擇 Add/Remove Snap-in...

Certificates 加進 Console Root

用來管理 Certificates snap-in 的 account,記得要挑選 Computer account

Personal \ Certificates 可以看到我們剛剛完成的憑證,然後在上面按右鍵 All Tasks \ Export...

選擇 Yes, export the private key

給它一組安全密碼

指定私鑰檔案的匯出路徑

最後借助 OpenSSL 的力量,將匯出的私鑰檔案拿轉換成 PEM 格式的憑證檔案,過程中會需要輸入剛剛設定的那一組安全密碼。

openssl pkcs12 -in D:\Downloads\godaddy\certificate.pfx -out D:\Downloads\godaddy\certificate.pem -nodes

在 GCP 的 Load Balancing 新增 HTTPS 的「前端 IP 和通訊埠」

編輯 HTTP(S) 負載平衡器前端設定中,點擊新增「前端 IP 和通訊埠」。

建立新憑證需要的資訊公用金鑰憑證憑證鏈結私密金鑰都在我們剛才一路上所取得的檔案裡面。

  • 公用金鑰憑證:從 SSL 供應商下載回來的其中一個沒有 bundle 字樣的 .crt 檔案。
  • 憑證鏈結:從 SSL 供應商下載回來的其中一個有 bundle 字樣的 .crt 檔案。
  • 私密金鑰:在剛剛轉換出來的 .pem 檔案裡面。

最後按下「完成」就大功告成了

參考資料

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學