新增和管理 Azure App Service 中的 TLS/SSL 憑證
注意
從 2024 年 6 月 1 日起,所有新建立的 App Service 應用程式都可以選擇使用命名慣例 <app-name>-<random-hash>.<region>.azurewebsites.net
來產生唯一的預設主機名稱。 現有的應用程式名稱將保持不變。
範例: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
如需詳細資料,請參閱 App Service 資源的唯一預設主機名稱 (英文)。
您可以新增數位安全性憑證來用於應用程式程式碼中或協助保護 Azure App Service 中的自訂 DNS 名稱,以提供可高度調整、自我修補的虛擬主機服務。 目前稱為傳輸層安全性 (TLS) 憑證,先前又稱為安全通訊端層 (SSL) 憑證,這些私人或公開憑證透過加密您的瀏覽器、您所瀏覽的網站及網站伺服器之間傳送的資料,來協助您保護網際網路連線。
下表列出可供您在 App Service 中新增憑證的選項:
選項 | 描述 |
---|---|
建立免費 App Service 受控憑證 | 免費且易於使用的私人憑證 (如果您只需要提高 App Service 中自訂網域的安全性)。 |
匯入 App Service 憑證 | Azure 所管理的私人憑證。 這兼具自動化憑證管理的簡便,以及續約和匯出選項的彈性。 |
從 Key Vault 匯入憑證 | 如果您使用 Azure Key Vault 管理您的 PKCS12 憑證,這會很有用。 請參閱私人憑證需求。 |
上傳私人憑證 | 如果您已有第三方提供者的私人憑證,可以上傳該憑證。 請參閱私人憑證需求。 |
上傳公開憑證 | 公開憑證不是用來保護自訂網域,但如果您需要用它們來存取遠端資源,可以將其載入至程式碼。 |
必要條件
建立 App Service 應用程式。 應用程式的 App Service 方案必須屬於基本、標準、進階或隔離層中。 請參閱擴大應用程式以更新階層。
請確定私人憑證符合 App Service 的所有需求。
僅限免費憑證:
將需要憑證的網域對應至 App Service。 如需相關資訊,請參閱教學課程:將現有的自訂 DNS 名稱對應至 Azure App Service。
針對根網域 (如 contoso.com),請確定您的應用程式未設定任何 IP 限制。 如何為根網域建立憑證及定期更新,取決於可從網際網路連接的應用程式。
一私人憑證需求
免費 App Service 受控憑證和 App Service 憑證已經符合 App Service 的需求。 如果您選擇將私人憑證上傳或匯入至 App Service,您的憑證就必須符合下列需求:
- 匯出為受密碼保護的 PFX 檔案 (以三重 DES 加密)
- 包含長度至少 2048 位元的私密金鑰
- 包含憑證鏈結中的所有中繼憑證和根憑證
如果您想要協助保護 TLS 繫結中的自訂網域,則憑證必須符合下列額外的需求:
- 包含伺服器驗證的擴充金鑰使用方法 (OID = 1.3.6.1.5.5.7.3.1)
- 已由信任的憑證授權單位簽署
注意
橢圓曲線密碼編譯 (ECC) 憑證適用於 App Service,但不在本文討論範圍內。 如需建立 ECC 憑證的確切步驟,請洽詢您的憑證授權單位。
注意
將私人憑證新增至應用程式之後,憑證會儲存在部署單位中,繫結至 App Service 方案的資源群組、區域和作業系統組合 (在內部稱為「網路空間」)。 如此一來,相同資源群組、區域和作業系統組合中的其他應用程式就可以存取憑證。 會與相同部署單位中的 App Services 共用上傳或匯入至 App Service 的私人憑證。
每個網路空間最多可新增 1000 個私人憑證。
建立免費的受控憑證
免費的 App Service 受控憑證是一種即時可用的解決方案,可用於幫助保護您在 App Service 中的自訂 DNS 名稱。 不需要您採取任何動作,此 TLS/SSL 伺服器憑證完全由 App Service 管理,只要設定的必要條件維持不變,則在到期前的 45 天會以六個月為單位持續自動更新。 所有相關聯的繫結都隨著更新的憑證而更新。 您只要建立憑證並繫結至自訂網域,其餘工作就交給 App Service。
重要
建立免費的受控憑證之前,請確定應用程式已符合必要條件。
免費憑證由 DigiCert 所發行。 針對某些網域,您必須建立值為 0 issue digicert.com
的 CAA 網域記錄,以明確允許 DigiCert 作為憑證簽發者。
Azure 會代表您完全管理憑證,因此可以隨時變更受控憑證的任何層面,包括根憑證簽發者。 這些變更不在您的控制範圍內。 請務必避免硬式相依性,以及將練習憑證「釘選」到受控憑證或憑證階層的任何部分。 如果您需要憑證釘選行為,請使用本文的任何其他可用方法,將憑證新增至自訂網域。
免費憑證有下列限制:
- 不支援萬用字元憑證。
- 不支援使用憑證指紋作為用戶端憑證的使用方式,此方式已規劃將淘汰和移除。
- 不支援私人 DNS。
- 無法匯出。
- 在 App Service 環境中不受支援。
- 僅支援英數字元、連字號 (-) 和句號 (.)。
- 僅支援長度最多 64 個字元的自訂網域。
在 Azure 入口網站中,從左側功能表選取 [應用程式服務]><app-name>>。
在應用程式的導覽功能表上,選取 [憑證]。 在 [受控憑證] 窗格中,選取 [新增憑證]。
選取免費憑證的自訂網域,然後選取 [驗證]。 驗證完成時,選取 [新增]。 您只能為每個支援的自訂網域建立一個受控憑證。
當作業完成時,憑證會出現在 [受控憑證] 清單中。
若要使用此憑證為自訂網域提供安全性,您仍然必須建立憑證繫結。 請遵循在 Azure App Service 中使用 TLS/SSL 繫結保護自訂 DNS 名稱中的步驟。
匯入 App Service 憑證
若要匯入 App Service 憑證,請先購買並設定 App Service 憑證,然後遵循此處的步驟。
在 Azure 入口網站中,從左側功能表選取 [應用程式服務]><app-name>>。
從應用程式的導覽功能表中,選取 [憑證] > [攜帶您自己的憑證 (.pfx)] > [新增憑證]。
在 [來源] 中,選取 [匯入 App Service 憑證]。
在 [App Service 憑證] 中,選取您剛才建立的憑證。
在 [憑證自訂名稱] 中,為應用程式中的憑證指定名稱。
選取驗證。 驗證成功時,請選取 [新增]。
當作業完成時,憑證會出現在 [攜帶您自己的憑證] 清單中。
為了協助使用此憑證來保護自訂網域,您仍然必須建立憑證繫結。 請遵循在 Azure App Service 中使用 TLS/SSL 繫結保護自訂 DNS 名稱中的步驟。
從 Key Vault 匯入憑證
如果您使用 Azure Key Vault 管理憑證,則可以在符合需求時,將 PKCS12 憑證從 Key Vault 匯入到 App Service。
授權 App Service 從保存庫讀取
根據預設,App Service 資源提供者無法存取您的金鑰保存庫。 若要使用金鑰保存庫進行憑證部署,您必須授權資源提供者 (App Service) 對金鑰保存庫的讀取權限。 您可以使用存取原則或 RBAC 來授與存取權。
資源提供者 | 服務主體應用程式識別碼 / 受託人 | 金鑰保存庫 RBAC 角色 |
---|---|---|
Microsoft Azure App Service 或 Microsoft.Azure.WebSites | 公用 Azure 雲端環境的 - abfa0a7c-a6b6-4736-8310-5855508787cd Azure Government 雲端環境的 - 6a02c803-dafd-4136-b4c3-5a6f318b4714 |
憑證使用者 |
服務主體應用程式識別碼或受託人值是 App Service 資源提供者的識別碼。 若要了解如何使用存取原則來授權 App Service 資源提供者的金鑰保存庫權限,請參閱使用 Azure 角色型存取控制文件提供 Key Vault 金鑰、憑證和秘密的存取權。
注意
請勿從金鑰保存庫中刪除這些 RBAC 權限。 如果您這樣做,App Service 將無法將您的 Web 應用程式與最新的金鑰保存庫憑證版本同步。
將憑證從您的保存庫匯入到您的應用程式
在 Azure 入口網站中,從左側功能表選取 [應用程式服務]><app-name>>。
從應用程式的導覽功能表中,選取 [憑證] > [攜帶您自己的憑證 (.pfx)] > [新增憑證]。
在 [來源] 中,選取 [從 Key Vault 匯入]。
選取 [選取 Key Vault 憑證]。
為了協助您選取憑證,請使用下表:
設定 描述 訂用帳戶 與金鑰保存庫相關聯的訂閱。 Key vault 具有您想要匯入之憑證的金鑰保存庫。 [MSSQLSERVER 的通訊協定內容] 從此清單,選取位於保存庫中的 PKCS12 憑證。 保存庫中所有的 PKCS12 憑證會連同其指紋一併列出,但在 App Service 中並非皆受到支援。 完成選取後,選取 [選取]、[驗證],然後選取 [新增]。
當作業完成時,憑證會出現在 [攜帶您自己的憑證] 清單中。 如果匯入失敗並發生錯誤,則表示憑證不符合 App Service 的需求。
注意
如果您以新憑證更新 Key Vault 中的憑證,App Service 會在 24 小時內自動同步憑證。
為了協助使用此憑證來保護自訂網域,您仍然必須建立憑證繫結。 請遵循在 Azure App Service 中使用 TLS/SSL 繫結保護自訂 DNS 名稱中的步驟。
上傳私人憑證
從憑證提供者取得憑證之後,請遵循本節中的步驟,讓憑證可用於 App Service。
合併中繼憑證
如果憑證授權單位在憑證鏈結中提供多個憑證,您必須遵循相同順序合併憑證。
在文字編輯器中,開啟每個收到的憑證。
若要儲存合併的憑證,請建立名為 mergedcertificate.crt 的檔案。
將每個憑證的內容複製到這個檔案中。 請務必遵循憑證鏈結所指定的憑證順序,從您的憑證開始,並以根憑證結尾,例如:
-----BEGIN CERTIFICATE----- <your entire Base64 encoded SSL certificate> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <The entire Base64 encoded intermediate certificate 1> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <The entire Base64 encoded intermediate certificate 2> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <The entire Base64 encoded root certificate> -----END CERTIFICATE-----
將合併的私人憑證匯出至 PFX
現在,您可以透過用來產生憑證要求的私密金鑰,匯出合併的 TLS/SSL 憑證。 如果您是使用 OpenSSL 產生憑證要求,則已建立私密金鑰檔案。
注意
OpenSSL v3 將預設加密方式從 3DES 變更為 AES256,但這可以在命令列上覆寫:-keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg SHA1。 OpenSSL v1 使用 3DES 作為預設值,因此不需要進行任何特殊修改,系統即可支援所產生的 PFX 檔案。
若要將憑證匯出至 PFX 檔案,請執行下列命令,但以私密金鑰與合併的憑證檔案路徑來取代預留位置 <private-key-file> 和 <merged-certificate-file>。
openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>
出現提示時,請指定匯出作業的密碼。 當您稍後將 TLS/SSL 憑證上傳至 App Service 時,您必須提供此密碼。
如果您使用 IIS 或 Certreq.exe 產生憑證要求,請將憑證安裝至本機電腦,然後將憑證匯出至 PFX 檔案。
上傳憑證至 App Service
您現在已準備好將憑證上傳至 App Service。
在 Azure 入口網站中,從左側功能表選取 [應用程式服務]><app-name>>。
從應用程式的導覽功能表中,選取 [憑證] > [攜帶您自己的憑證 (.pfx)] > [上傳憑證]。
為了協助您上傳 .pfx 憑證,請使用下表:
設定 描述 PFX 憑證檔案 選取您的 .pfx 檔案。 憑證密碼 輸入您匯出 PFX 檔案時所建立的密碼。 憑證自訂名稱 將在 Web 應用程式中顯示的憑證名稱。 完成選取後,選取 [選取]、[驗證],然後選取 [新增]。
當作業完成時,憑證會出現在 [攜帶您自己的憑證] 清單中。
若要使用此憑證為自訂網域提供安全性,您仍然必須建立憑證繫結。 請遵循在 Azure App Service 中使用 TLS/SSL 繫結保護自訂 DNS 名稱中的步驟。
上傳公開憑證
公開憑證支援 .cer 格式。
注意
當您將公開憑證上傳到應用程式後,它只能被上傳到其中的該應用程式存取。 公開憑證必須上傳至每個需要存取權的個別 Web 應用程式。 如需 App Service 環境特定案例,請參閱憑證和 App Service 環境的文件。
每個 App Service 方案最多可以上傳 1000 個公開憑證。
在 Azure 入口網站中,從左側功能表選取 [應用程式服務]><app-name>>。
從應用程式的導覽功能表中,選取 [憑證] > [公開金鑰憑證 (.cer)] > [新增憑證]。
為了協助您上傳 .cer 憑證,請使用下表:
設定 描述 CER 憑證檔案 選取您的 .cer 檔案。 憑證自訂名稱 將在 Web 應用程式中顯示的憑證名稱。 完成後,選取 [新增]。
上傳憑證之後,請複製憑證指紋,然後檢閱使憑證可供存取。
更新即將到期的憑證
請務必在憑證到期之前,將更新的憑證新增至App Service,並更新其流程相依於憑證類型的任何憑證繫結。 例如,從 Key Vault 匯入的憑證 (包括 App Service 憑證) 每 24 小時自動同步至 App Service,並在您更新憑證時更新 TLS/SSL 繫結。 對於上傳的憑證,不會自動更新繫結。 根據您的案例,檢閱對應的章節:
更新上傳的憑證
取代即將到期的憑證時,您以新憑證更新憑證繫結的方式,可能對使用者體驗造成負面影響。 例如,刪除繫結時,即使該繫結以 IP 為基礎,輸入 IP 位址仍有可能變更。 當您更新已在以 IP 為基礎之繫結中的憑證時,此結果的影響會特別高。 為了避免應用程式的 IP 位址變更,並避免應用程式因為 HTTPS 錯誤而當掉,請依指定順序遵循下列步驟:
移至您的應用程式的 [自訂網域] 頁面,選取 [...] 按鈕,然後選取 [更新繫結]。
選取新的憑證,然後選取 [更新]。
刪除現有的憑證。
更新從 Key Vault 匯入的憑證
注意
若要更新 App Service 憑證,請參閱更新 App Service 憑證。
若要更新您從 Key Vault 匯入至 App Service 的憑證,請檢閱更新 Azure App Service 憑證。
在您的金鑰保存庫中更新憑證後,App Service 會在 24 小時內自動同步新的憑證,並更新任何適用的憑證繫結。 若要手動同步,請遵循下列步驟:
移至您應用程式的 [憑證] 頁面。
在 [攜帶您自己的憑證 (.pfx)] 底下,選取已匯入金鑰保存庫憑證的 [...] 按鈕,然後選取 [同步處理]。
常見問題集
我如何將「攜帶您自己的憑證」自動新增至應用程式中?
我是否可對應用程式的輸入 TLS 使用私人 CA (憑證授權單位) 憑證?
您可以在 App Service 環境第 3 版中將私人 CA 憑證用於輸入 TLS。 此做法在 App Service (多租用戶) 中不可行。 如需 App Service 多租用戶與單一租用戶的詳細資訊,請參閱 App Service 環境 v3 與 App Service 公用多租用戶的比較。
我是否可使用私人 CA 用戶端憑證從我的應用程式進行輸出呼叫?
此功能僅適用於多租用戶 App Service 中的 Windows 容器應用程式。 此外,在 App Service 環境第 3 版中,您可以使用私人 CA 用戶端憑證從程式碼型和容器型應用程式進行輸出呼叫。 如需 App Service 多租用戶與單一租用戶的詳細資訊,請參閱 App Service 環境 v3 與 App Service 公用多租用戶的比較。
我是否可在 App Service 信任的根存放區中載入私人 CA 憑證?
您可以在 App Service 環境第 3 版中將自己的 CA 憑證載入受信任的根存放區中。 您無法修改 App Service (多租用戶) 中受信任的根憑證清單。 如需 App Service 多租用戶與單一租用戶的詳細資訊,請參閱 App Service 環境 v3 與 App Service 公用多租用戶的比較。
App Service 憑證可以用於其他服務嗎?
是,可以導出透過App Service 憑證購買的憑證,並搭配 應用程式閘道或其他服務使用。 如需詳細資訊,請參閱下列部落格文章: 建立 App Service 憑證的本機 PFX 複本。