憑證和 App Service 環境 v2

重要

本文說明隔離式 App Service 方案搭配使用的 App Service 環境 v2 相關資訊。 App Service 環境 v2 將在 2024 年 8 月 31 日淘汰。 有較新版本的 App Service 環境,其更易於使用,並且是在更強大的基礎結構上執行。 若要深入瞭解新版本,請從 App Service 環境簡介開始。 如果您目前使用 App Service 環境 v2,請遵循本文中的步驟來移轉至新版本。

自 2024 年 1 月 29 日起,您無法再使用任何可用的方法建立新的 App Service 環境 v2 資源,包括 ARM/Bicep 範本、Azure 入口網站、Azure CLI 或 REST API。 您必須在 2024 年 8 月 31 日之前移轉至 App Service 環境 v3,以避免資源刪除和資料遺失。

App Service Environment (ASE) 是在 Azure 虛擬網路 (VNet) 內執行之 Azure App Service 的部署。 它可以使用網際網路可存取的應用程式端點,或是使用您 VNet 中的應用程式端點來部署。 如果您使用網際網路可存取的端點來部署 ASE,則該部署稱為外部 ASE。 如果您使用 VNet 中的端點來部署 ASE,則該部署稱為 ILB ASE。 若要深入了解 ILB ASE,請參閱建立和使用 ILB ASE 文件。

ASE 是單一租用戶系統。 因為它是單一租用戶,所以有一些功能僅提供於 ASE,而未提供於多租用戶的 App Service 中。

ILB ASE 憑證

如果您使用外部 ASE,則可在 <appname>.<asename>.p.azurewebsites.net 存取您的應用程式。 根據預設會使用遵循該格式的憑證來建立所有 ASE,甚至是 ILB ASE。 當您有 ILB ASE 時,可根據建立 ILB ASE 時您指定的網域名稱來存取應用程式。 若要讓應用程式支援 TLS,您必須上傳憑證。 使用內部憑證授權單位、向外部簽發者購買憑證、或使用自我簽署的憑證,取得有效的 TLS/SSL 憑證。

有兩個選項可設定您的 ILB ASE 的憑證。 您可以設定 ILB ASE 的萬用字元預設憑證,或在 ASE 中的個別 Web 應用程式上設定憑證。 無論您的選擇為何,都需要正確設定下列憑證屬性︰

  • Subject︰針對萬用字元 ILB ASE 憑證,這個屬性必須設為 *.[your-root-domain-here]。 如果在建立應用程式的憑證,它應該是 [appname].[your-root-domain-here]
  • Subject Alternative Name:針對萬用字元 ILB ASE 憑證,這個屬性必須包含 *.[your-root-domain-here] 和 *.scm.[your-root-domain-here]。 如果在建立應用程式的憑證,它應該是 [appname].[your-root-domain-here] 和 [appname].scm.[your-root-domain-here]。

第三種變化,您可以建立 ILB ASE 憑證,其中包含憑證 SAN 中的所有個別應用程式名稱,而不是使用萬用字元參考。 這個方法的問題在於,您必須事先知道您要放在 ASE 中的應用程式名稱,或者您需要持續更新 ILB ASE 憑證。

上傳憑證到 ILB ASE

在入口網站中建立 ILB ASE 之後,必須設定 ILB ASE 的憑證。 在設定憑證之前,ASE 會顯示未設定憑證的橫幅。

您上傳的憑證必須是 .pfx 檔案。 上傳憑證之後,使用憑證前大約會有 20 分鐘的時間延遲。

您無法在入口網站中以一個動作建立 ASE 並上傳憑證,或甚至是在一個範本中進行。 作為個別的動作,您可以使用範本上傳憑證,如從範本建立 ASE 文件中所述。

如果您想要快速建立自我簽署的憑證以進行測試,可以使用 PowerShell 的下列位元:

$certificate = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname "*.internal.contoso.com","*.scm.internal.contoso.com"

$certThumbprint = "cert:\localMachine\my\" + $certificate.Thumbprint
$password = ConvertTo-SecureString -String "CHANGETHISPASSWORD" -Force -AsPlainText

$fileName = "exportedcert.pfx"
Export-PfxCertificate -cert $certThumbprint -FilePath $fileName -Password $password

建立自我簽署憑證時,您必須確定主體名稱的格式為 CN={ASE_NAME_HERE}_InternalLoadBalancingASE。

應用程式憑證

在 ASE 中裝載的應用程式可以使用以應用程式為中心的憑證功能,這些功能提供於多租用戶的 App Service 中。 這些功能包括:

  • SNI 憑證
  • 以 IP 為主的 SSL,這僅適用於外部 ASE。 ILB ASE 不支援以 IP 為主的 SSL。
  • KeyVault 裝載的憑證

如需上傳和管理這些憑證的指示,請參閱在 Azure App Service 中新增 TLS/SSL 憑證。 如果您只要設定憑證,以符合您已指派給 Web 應用程式的自訂網域名稱,這些指示便已足夠。 如果您要上傳具有預設網域名稱的 ILB ASE Web 應用程式憑證,則請指定憑證 SAN 中的 scm 網站,如先前所述。

TLS 設定

您可以在應用程式層級設定 TLS 設定。

私人用戶端憑證

常見使用案例是將應用程式設定為用戶端伺服器模型中的用戶端。 如果您使用私人 CA 憑證保護您的伺服器,則必須將用戶端憑證上傳至您的應用程式。 下列指示會將憑證載入至應用程式執行所在背景工作角色的 truststore。 如果您將憑證載入到一個應用程式,可以將它用於相同 App Service 方案中的其他應用程式,而不需要再次上傳憑證。

將憑證上傳至 ASE 中的應用程式︰

  1. 產生憑證的 .cer 檔案。

  2. 移至 Azure 入口網站中需要憑證的應用程式

  3. 移至應用程式中的 SSL 設定。 按一下 [上傳憑證]。 選取 [公用]。 選取 [本機電腦]。 提供名稱。 瀏覽並選取您的 .cer 檔案。 選取上傳。

  4. 複製憑證指紋。

  5. 移至 [應用程式設定]。 建立應用程式設定 WEBSITE_LOAD_ROOT_CERTIFICATES,並以憑證指紋作為值。 如果您有多個憑證,可以將它們放在相同設定中,並以逗點分隔且不含任何空白字元,例如

    84EC242A4EC7957817B8E48913E50953552DAFA6,6A5C65DC9247F762FE17BF8D4906E04FE6B31819

憑證將可由所有應用程式使用,而這些應用程式與設定該設定的應用程式具有相同 App Service 方案。 如果您需要它可用於不同 App Service 方案中的應用程式,必須在該 App Service 方案的應用程式中,重複應用程式設定作業。 若要檢查是否已設定憑證,請移至 Kudu 主控台,並在 PowerShell 偵錯主控台發出下列命令:

dir cert:\localmachine\root

若要執行測試,您可以建立自我簽署的憑證,並使用下列 PowerShell 產生 .cer 檔案:

$certificate = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname "*.internal.contoso.com","*.scm.internal.contoso.com"

$certThumbprint = "cert:\localMachine\my\" + $certificate.Thumbprint
$password = ConvertTo-SecureString -String "CHANGETHISPASSWORD" -Force -AsPlainText

$fileName = "exportedcert.cer"
export-certificate -Cert $certThumbprint -FilePath $fileName -Type CERT