在 Azure App Service 中新增 TLS/SSL 憑證

Azure App Service 可提供可高度擴充、自我修復的 Web 主控服務。 本文說明如何將私人憑證或公開憑證建立、上傳或匯入到 App Service。

一旦將憑證新增至您的 App Service 應用程式或函數應用程式後,您就可以使用它來保護自訂 DNS 名稱,或用於應用程式程式碼中

注意

上傳至應用程式的憑證會儲存在系結至 app service 方案的資源群組和區域組合的部署單位中, (在內部稱為網路 空間) 。 這可讓相同資源群組和區域組合中的其他應用程式能夠存取憑證。

下表列出您在 App Service 中所擁有可新增憑證的選項:

選項 描述
建立免費的 App Service 受控憑證 如果您只需要保護 App Service 中的 自訂網域 ,則免費且容易使用的私用憑證。
購買 App Service 憑證 此為由 Azure 管理的私人憑證。 它具有自動化憑證管理的簡易性,並兼具更新和匯出選項的彈性。
從金鑰保存庫匯入憑證 如果您使用 Azure Key Vault 管理您的 PKCS12 憑證,這會很有用。 請參閱私人憑證需求
上傳私人憑證 如果您已經有協力廠商提供者的私人憑證,您可以將該憑證上傳。 請參閱私人憑證需求
上傳公開憑證 公開憑證無法用來保護自訂網域,但如果您需要公開憑證來存取遠端資源,則可將公開憑證載入程式碼中。

必要條件

私人憑證需求

免費的 App Service 受控憑證App Service 憑證已經滿足 App Service 的需求。 如果您選擇將私人憑證上傳或匯入至 App Service,您的憑證就必須符合下列需求:

  • 匯出為 受密碼保護的 PFX檔案,並使用三重 DES 進行加密。
  • 包含長度至少為 2048 位元的私密金鑰
  • 包含憑證鏈中的所有中繼憑證和根憑證。

若要保護 TLS 繫結中的自訂網域,則憑證有額外的需求:

注意

橢圓曲線密碼編譯 (ECC) 憑證 可搭配 App Service 使用,但不在本文討論範圍內。 請洽詢您的憑證授權單位,了解建立 ECC 憑證的確切步驟。

準備您的 Web 應用程式

若要為您的 App Service 應用程式建立自訂 TLS/SSL 繫結或啟用用戶端憑證,您的 App Service 方案 必須使用 基本標準進階隔離 層。 在此步驟中,您要確定 Web 應用程式在支援的定價層。

登入 Azure

開啟 Azure 入口網站

搜尋並選取 [應用程式服務] 。

選取 [應用程式服務]

在 [應用程式服務] 頁面上,選取您的 Web 應用程式名稱。

Azure 入口網站中 [應用程式服務] 頁面的螢幕擷取畫面,其中顯示所有執行中 Web 應用程式的清單並醒目提示清單中的第一個應用程式。

您已經位於 Web 應用程式的管理頁面上。

檢查定價層

在 Web 應用程式頁面的左側導覽中,捲動到 [設定] 區段,然後選取 [擴大 (App Service 方案)] 。

相應增加功能表

請檢查以確定您的 Web 應用程式不在 F1D1 層中。 系統會以深藍色方塊醒目顯示 Web 應用程式目前的層。

檢查定價層

F1D1 層中不支援自訂 SSL。 如果您需要擴大,請遵循下一節中的步驟來進行。 否則,請關閉 [擴大] 頁面,並略過擴大 App Service 方案一節。

擴大您的 App Service 方案

選取任何非免費層 (B1B2 B3 或「生產」類別中的任何一層)。 如需其他選項,請按一下 [查看其他選項] 。

按一下 [套用] 。

選擇定價層

當您看見下列通知時,表示擴充作業已完成。

擴大通知

建立免費的受控憑證

注意

建立免費的受控憑證之前,請確定您已 完成應用程式的必要條件

免費的 App Service 受控憑證是一個可在 App Service 保護您自訂 DNS 名稱的金鑰解決方案。 它是完全受 App Service 管理的 TLS/SSL 伺服器憑證,並且會在到期前的六個月內以六個月的45增量自動更新。 您會建立憑證,並將它系結至自訂網域,讓 App Service 完成其餘部分。

此免費憑證有下列限制:

  • 不支援萬用字元憑證。
  • 不支援以憑證指紋作為用戶端憑證的使用方式, (移除憑證指紋的) 計畫。
  • 不可匯出。
  • App Service 環境 (ASE) 上並不支援。
  • 與流量管理員整合的根域不支援。
  • 如果是 CNAME 對應網域的憑證,則 CNAME 必須直接對應至 <app-name>.azurewebsites.net

注意

免費憑證由 DigiCert 所發行。 針對某些最上層網域,您必須使用下列值建立 CAA 網域記錄,以明確允許 DigiCert 作為憑證簽發者:0 issue digicert.com

Azure 入口網站的左側功能表中,選取 [應用程式服務] > <app-name>。

從應用程式的左側導覽中,選取 [TLS/SSL 設定] > [私密金鑰憑證 (.pfx)] > [匯入 App Service 受控憑證]。

在 App Service 中建立免費憑證

選取要為其建立免費憑證的自訂網域,然後選取 [建立]。 您只能為每個支援的自訂網域建立一個憑證。

當作業完成時,您會在 [私密金鑰憑證] 清單中看到憑證。

免費憑證建立完成

重要

若要使用此憑證保護自訂網域,您仍然需要建立憑證繫結。 請依照建立繫結中的步驟。

匯入 App Service 憑證

如果您從 Azure 購買 App Service 憑證,Azure 會管理下列工作:

  • 處理向 GoDaddy 的購買流程。
  • 執行憑證的網域驗證。
  • 維護 Azure Key Vault 中的憑證。
  • 管理憑證更新 (請參閱更新憑證)。
  • 自動將憑證與 App Service 應用程式中匯入的複本同步化。

若要購買 App Service 憑證,請前往開始訂購憑證

如果您已經有使用中的 App Service 憑證,您可以:

注意

Azure 國家雲端目前不支援 App Service 憑證。

開始訂購憑證

App Service 憑證建立頁面中開始訂購 App Service 憑證。

開始購買 App Service 憑證

使用下表來協助您設定憑證。 完成後,按一下 [建立]。

設定 描述
名稱 App Service 憑證的易記名稱。
裸網域主機名稱 在此處指定根網域。 根網域和 www 子網域 受到發行憑證的保護。 在發行的憑證中,[一般名稱] 欄位包含根網域,[主體別名] 欄位則包含 www 網域。 若只要保護所有子網域,請在這裡指定子網域的完整網域名稱 (例如 mysubdomain.contoso.com)。
訂用帳戶 會包含憑證的訂用帳戶。
資源群組 會包含憑證的資源群組。 您可以使用新的資源群組,或為您的 App Service 應用程式選取相同的資源群組。
憑證 SKU 決定要建立的憑證類型:標準憑證或萬用字元憑證
法律條款 按一下以確認您同意法律條款。 憑證是從 GoDaddy 取得的。

注意

從 Azure 購買的 App Service 憑證是由 GoDaddy 所簽發。 針對某些最上層網域,您必須使用下列值建立 CAA 網域記錄,以明確允許 GoDaddy 作為憑證簽發者:0 issue godaddy.com

儲存在 Azure Key Vault 中

憑證購買程序完成後,您必須先完成一些其他的步驟,才能開始使用此憑證。

選取 App Service 憑證頁面中的憑證,然後按一下 [憑證設定] > [步驟 1:存放區]。

設定 App Service 憑證的 Key Vault 儲存體

Key Vault 是一項 Azure 服務,可協助保護雲端應用程式和服務所使用的密碼編譯金鑰和祕密。 這是 App Service 憑證的儲存體選擇。

在 [Key Vault 狀態] 頁面中,按一下 [Key Vault 存放庫] 來建立新的保存庫或選擇現有的保存庫。 如果您選擇建立新的保存庫,請使用下表來協助您設定保存庫並按一下 [建立]。 在與 App Service 應用程式相同的訂用帳戶和資源群組內建立新的 Key Vault。

設定 描述
名稱 包含英數字元和虛線的唯一名稱。
資源群組 建議選取相同的資源群組作為您的 App Service 憑證。
Location 選取與 App Service 應用程式相同的位置。
定價層 如需詳細資訊,請參閱 Azure Key Vault 定價詳細資料
存取原則 定義應用程式以及允許的保存庫資源存取權。 您可以稍後設定,並遵循指派 Key Vault 存取原則中的步驟。
虛擬網路存取 限制某些 Azure 虛擬網路的保存庫存取權。 您可以稍後設定它,並遵循設定 Azure Key Vault 防火牆和虛擬網路中的步驟。

選取保存庫之後,關閉 [Key Vault 存放庫] 頁面。 [步驟 1:儲存] 選項應該會顯示綠色核取記號來表示已成功。 讓頁面保持開啟,以供下一個步驟使用。

注意

目前,App Service 憑證僅支援 Key Vault 存取原則,但不支援 RBAC 模型。

確認網域擁有權

從您在上一個步驟中使用的相同 [憑證設定] 頁面,按一下 [步驟 2:驗證]。

驗證 App Service 憑證的網域

選取 [App Service 驗證]。 您已經將網域對應至您的 Web 應用程式 (請參閱必要條件),因此它已經過驗證。 只要按一下 [驗證] 即可完成此步驟。 按一下 [重新整理] 按鈕,直到「憑證已經過網域驗證」訊息出現為止。

注意

支援的網域驗證方法有四種:

  • App Service - 當網域已經對應至相同訂用帳戶中的 App Service 應用程式時最方便的選項。 它使用 App Service 應用程式在實質上已通過網域擁有權驗證的這個優勢。
  • 網域 - 驗證 您購自 Azure 的 App Service 網域。 Azure 會自動為您新增驗證 TXT 記錄並完成程序。
  • 郵件 - 將電子郵件傳送給網域管理員來驗證網域。 當您選取此選項時,系統會提供指示。
  • 手動 - 使用 HTML 網頁 (僅限 標準 憑證) 或 DNS TXT 記錄驗證網域。 當您選取此選項時,系統會提供指示。

將憑證匯入至 App Service

Azure 入口網站的左側功能表中,選取 [應用程式服務] > <app-name>。

從您應用程式的左側導覽中,選取 [TLS/SSL 設定] > [私密金鑰憑證 (.pfx)] > [匯入 App Service 憑證]。

在 App Service 中匯入 App Service 憑證

選取您剛剛購買的憑證,然後選取 [確定]。

當作業完成時,您會在 [私密金鑰憑證] 清單中看到憑證。

App Service 憑證匯入完成

重要

若要使用此憑證保護自訂網域,您仍然需要建立憑證繫結。 請依照建立繫結中的步驟。

從金鑰保存庫匯入憑證

如果您使用 Azure Key Vault 管理憑證,只要 PKCS12 憑證符合需求,便可將該憑證從 Key Vault 匯入到 App Service。

授權 App Service 從保存庫讀取

根據預設,App Service 資源提供者無法存取 Key Vault。 若要使用 Key Vault 進行憑證部署,您必須授權資源提供者對 KeyVault 的讀取權限

abfa0a7c-a6b6-4736-8310-5855508787cd 是 App Service 的資源提供者服務主體名稱,而對所有 Azure 訂用帳戶都是相同的。 針對 Azure Government 雲端環境,使用 6a02c803-dafd-4136-b4c3-5a6f318b4714,而不是資源提供者服務主體名稱。

注意

Key Vault 憑證目前僅支援 Key Vault 存取原則,但不支援 RBAC 模型。

將憑證從您的保存庫匯入到您的應用程式

Azure 入口網站的左側功能表中,選取 [應用程式服務] > <app-name>。

從您應用程式的左側導覽中,選取 [TLS/SSL 設定] > [私密金鑰憑證 (.pfx)] > [匯入 Key Vault 憑證]。

在 App Service 中匯入 Key Vault 憑證

使用下表來協助您選取憑證。

設定 描述
訂用帳戶 Key Vault 所屬的訂用帳戶。
Key Vault 具有所要匯入憑證的保存庫。
憑證 從保存庫內的 PKCS12 憑證清單中選取。 保存庫中所有的 PKCS12 憑證會連同其指紋一併列出,但在 App Service 中並非皆受到支援。

當作業完成時,您會在 [私密金鑰憑證] 清單中看到憑證。 如果匯入失敗並發生錯誤,則表示憑證不符合 App Service 的需求

Key Vault 憑證匯入完成

注意

如果您使用新憑證更新 Key Vault 中的憑證,App Service 會在24小時內自動同步處理您的憑證。

重要

若要使用此憑證保護自訂網域,您仍然需要建立憑證繫結。 請依照建立繫結中的步驟。

上傳私人憑證

從憑證提供者取得憑證後,請遵循本節中的步驟,讓憑證可用於 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 產生憑證要求,則已建立私密金鑰檔案。 若要將您的憑證匯出為 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>。

從您應用程式的左側導覽中,選取 [TLS/SSL 設定] > [私密金鑰憑證 (.pfx)] > [上傳憑證]。

在 App Service 中上傳私人憑證

在 [PFX 憑證檔案] 中,選取您的 PFX 檔案。 在 [憑證密碼] 中,輸入您將 PFX 檔案匯出時所建立的密碼。 完成後,請按一下 [上傳]。

當作業完成時,您會在 [私密金鑰憑證] 清單中看到憑證。

憑證上傳完成

重要

若要使用此憑證保護自訂網域,您仍然需要建立憑證繫結。 請依照建立繫結中的步驟。

上傳公開憑證

公開憑證支援 .cer 格式。

Azure 入口網站的左側功能表中,選取 [應用程式服務] > <app-name>。

從您應用程式的左側導覽中,按一下 [TLS/SSL 設定] > [私密金鑰憑證 (.pfx)] > [上傳公開金鑰憑證]。

在 [名稱] 中,輸入憑證的名稱。 在 [CER 憑證檔案] 中,選取您的 CER 檔案。

按一下 [上傳] 。

在 App Service 中上傳公開憑證

憑證一旦上傳後,請複製憑證指紋,並請參閱讓憑證可供存取

更新即將到期的憑證

憑證到期之前,您應該將更新的憑證新增至 App Service,並更新任何 TLS/SSL系結。 此處理程式取決於憑證類型。 例如, 從 Key Vault(包括 App Service 憑證)匯入的憑證會每隔24小時自動同步處理 App Service,並在您更新憑證時更新 TLS/SSL 系結。 若為已 上傳的憑證,則不會自動系結更新。 視您的案例而定,請參閱下列其中一節:

更新已上傳的憑證

為了取代即將到期的憑證,您如何使用新的憑證來更新憑證系結,可能會對使用者體驗造成不良的影響。 例如,您可以在刪除系結時變更輸入 IP 位址,即使該系結是以 IP 為基礎。 當您更新已在以 IP 為基礎的繫結中的憑證時,這一點更為重要。 若要避免應用程式的 IP 位址發生變更,並避免應用程式因 HTTPS 錯誤而停止運作,請依序執行下列步驟:

  1. Upload 新的憑證
  2. 新憑證系結至相同的自訂網域,而不刪除現有的 () 憑證過期。 此動作會取代系結,而不會移除現有的憑證系結。
  3. 刪除現有的憑證。

更新 App Service 憑證

注意

更新程式要求 App Service 的 已知服務主體必須具備您金鑰保存庫的必要許可權。 當您透過入口網站匯入 App Service 憑證時,系統會為您設定此許可權,而且不應該從您的金鑰保存庫中移除。

您可以隨時在 [ App Service 憑證] 頁面中選取憑證,然後按一下左側導覽中的 [自動更新設定,以隨時切換 App Service 憑證的自動更新設定。 根據預設,App Service 憑證的有效期間為一年。

選取 [ 開啟 ] 或 [ 關閉 ],然後按一下 [ 儲存]。 如果您已開啟自動更新,憑證可以在到期前31天開始自動更新。

自動更新 App Service 憑證

若要改為手動更新憑證,請按一下 [手動更新]。 您可以在過期前的 60 天要求手動更新憑證。

更新作業完成後,請按一下 [同步]。同步作業會自動更新 App Service 中憑證的主機名稱繫結,而不會對您的應用程式造成任何停機。

注意

如果您沒有按一下 [ 同步 處理],App Service 會在24小時內自動同步處理您的憑證。

更新從 Key Vault 匯入的憑證

若要更新從 Key Vault 匯入 App Service 的憑證,請參閱 更新 Azure Key Vault 憑證

在金鑰保存庫中更新憑證之後,App Service 會自動同步處理新的憑證,並在24小時內更新任何適用的 TLS/SSL 系結。 若要手動同步:

  1. 移至您應用程式的 [ TLS/SSL 設定 ] 頁面。
  2. 在 [ 私密金鑰憑證] 底下選取已匯入的憑證。
  3. 按一下 [同步處理] 。

管理 App Service 憑證

本節說明如何管理 您所購買的 App Service 憑證

另請參閱 更新憑證 App Service

重設憑證的金鑰

如果您認為您憑證的私密金鑰遭到入侵,您可以重設憑證的金鑰。 選取 App Service 憑證頁面中的憑證,然後從左側導覽中選取 [重設金鑰和同步處理]。

按一下 [重設金鑰] 來啟動處理程序。 此程序需要 1 - 10 分鐘才能完成。

重設 App Service 憑證的金鑰

重設憑證的金鑰,會以憑證授權單位發行的新憑證變更憑證。

重設金鑰作業完成後,請按一下 [同步]。同步作業會自動更新 App Service 中憑證的主機名稱繫結,而不會對您的應用程式造成任何停機。

注意

如果您沒有按一下 [ 同步 處理],App Service 會在24小時內自動同步處理您的憑證。

匯出憑證

由於 App Service 憑證是 Key Vault 秘密,因此您可以匯出其 PFX 複本,並將它用於其他 Azure 服務或 Azure 外部。

若要將 App Service 憑證匯出為 PFX 檔案,請在 Cloud Shell 中執行下列命令。 如果您已安裝 Azure CLI,則也可以在本機執行。 以您在建立 App Service 憑證時使用的名稱取代預留位置。

secretname=$(az resource show \
    --resource-group <group-name> \
    --resource-type "Microsoft.CertificateRegistration/certificateOrders" \
    --name <app-service-cert-name> \
    --query "properties.certificates.<app-service-cert-name>.keyVaultSecretName" \
    --output tsv)

az keyvault secret download \
    --file appservicecertificate.pfx \
    --vault-name <key-vault-name> \
    --name $secretname \
    --encoding base64

下載的 appservicecertificate.pfx 檔案是原始的 PKCS12 檔案,其中同時包含公開憑證和私人憑證。 每當系統提示您時,匯入密碼和 PEM 複雜密碼都使用空字串。

Delete certificate

刪除 App Service 憑證是不可更改且無法復原的。 刪除 App Service 憑證資源會導致憑證遭到撤銷。 App Service 中任何與此憑證的繫結都會變成無效。 為了防止意外刪除,Azure 會鎖定憑證。 若要刪除 App Service 憑證,您必須先移除憑證的刪除鎖定。

選取 App Service 憑證頁面中的憑證,然後在左側導覽中選取 [鎖定]。

在您的憑證上尋找鎖定類型為 [刪除] 的鎖定。 選取其右側的 [刪除]。

App Service 憑證的刪除鎖定

現在您可以刪除 App Service 憑證。 從左側導覽中,選取 [總覽] > [刪除]。 在確認對話方塊中,輸入憑證名稱,然後選取 [確定]。

<a name="automate-with-scripts">使用指令碼進行自動化

Azure CLI

[!code-azurecli[main](../../cli_scripts/app-service/configure-ssl-certificate/configure-ssl-certificate.sh?highlight=3-5 "Bind a custom TLS/SSL certificate to a web app")]

PowerShell

$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzResourceGroup -Name $webappname -Location $location

# Create an App Service plan in Free tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free

# Create a web app.
New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Read-Host "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic

# Add a custom domain name to the web app. 
Set-AzWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")

# Upload and bind the SSL certificate to the web app.
New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled

其他資源