這很重要
從 2025 年 7 月 28 日開始,App Service 受控憑證 (ASMC) 的變更將影響特定案例中憑證的發行和更新方式。 雖然大多數客戶不需要採取行動,但我們建議您檢閱我們的 ASMC 詳細部落格文章 以取得更多資訊。
在您的應用程式程式代碼中,您可以存取 您新增至 Azure App Service 的公開或私人憑證。 您的應用程式程式代碼可能會作為用戶端,並存取需要憑證驗證的外部服務。 它也可能需要執行密碼編譯工作。 本文說明如何在應用程式程序代碼中使用公用或私人憑證。
在程式代碼中使用憑證的方法會使用App Service 中的傳輸層安全性 (TLS) 功能,這需要您的應用程式位於基本層或更高層級。 如果您的應用程式位於免費或共享層中,您可以在 應用程式存放庫中包含憑證檔案。
當您讓 App Service 管理 TLS/安全套接字層 (SSL) 憑證時,您可以個別維護憑證和應用程式程式代碼,並保護您的敏感數據。
先決條件
若要遵循這篇文章,請參閱:
尋找指紋
在 Azure 入口網站的左窗格中,選取 [App Services><應用程式名稱>]。
在應用程式的左窗格中,選取 [ 憑證]。 然後選取 [攜帶您自己的憑證][pfx] 或 [公鑰憑證][.cer]。
尋找您想要使用的憑證,並複製指紋。

讓憑證可供存取
若要存取應用程式程式代碼中的憑證,請將其指紋新增至 WEBSITE_LOAD_CERTIFICATES 應用程式設定。 在 Azure Cloud Shell 中執行下列命令:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>
若要讓所有憑證都可供存取,請將 值設定為 *。
當 WEBSITE_LOAD_CERTIFICATES 設定為 * 時,所有先前新增的憑證都可供應用程式代碼存取。 如果您稍後將憑證新增至應用程式,請重新啟動應用程式,讓您的應用程式能夠存取新的憑證。 如需詳細資訊,請參閱 更新或更新憑證。
在 Windows 應用程式中載入憑證
應用程式 WEBSITE_LOAD_CERTIFICATES 設定可讓 Windows 證書存儲中 目前使用者\My 中的 Windows 託管應用程式存取指定的憑證。
在 C# 程式代碼中,您可以使用憑證指紋來存取憑證。 下列程式代碼會載入具有指紋 E661583E8FABEF4C0BEF694CBC41C28FB81CD870的憑證。
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
string certThumbprint = "E661583E8FABEF4C0BEF694CBC41C28FB81CD870";
bool validOnly = false;
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(
X509FindType.FindByThumbprint,
// Replace below with your certificate's thumbprint
certThumbprint,
validOnly);
// Get the first cert with the thumbprint
X509Certificate2 cert = certCollection.OfType<X509Certificate2>().FirstOrDefault();
if (cert is null)
throw new Exception($"Certificate with thumbprint {certThumbprint} was not found");
// Use certificate
Console.WriteLine(cert.FriendlyName);
// Consider to call Dispose() on the certificate after it's being used, available in .NET 4.6 and later
}
在 Java 程式代碼中,您可以使用 [Windows-MY] 字段,從存放區存取憑證。 如需詳細資訊,請參閱 公鑰憑證。 下列程式代碼示範如何載入私鑰憑證:
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.PrivateKey;
...
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Certificate cert = ks.getCertificate("<subject-cn>");
PrivateKey privKey = (PrivateKey) ks.getKey("<subject-cn>", ("<password>").toCharArray());
// Use the certificate and key
...
如需不支援或提供 Windows 證書存儲支援不足的語言,請參閱 從檔案載入憑證。
從檔案載入憑證
如果您需要手動載入您上傳的憑證檔案,最好是使用 檔案傳輸通訊協定安全 (FTPS) 而不是 Git 來上傳憑證。 讓敏感性資料就像私人憑證不在原始檔控制中。
即使從檔案載入憑證,Windows 上的 ASP.NET 和 ASP.NET Core 也必須存取證書存儲。 若要在 Windows .NET 應用程式中載入憑證檔案,請在 Cloud Shell 中使用下列命令載入目前的使用者設定檔:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
在程式代碼中使用憑證的方法會使用App Service中的TLS功能,這需要您的應用程式位於基本層或更高層級。
下列 C# 範例會從應用程式中的相對路徑載入公用憑證:
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("~/<relative-path-to-cert-file>");
// Use the loaded certificate
若要瞭解如何從 Node.js、PHP、Python 或 Java 中的檔案載入 TLS/SSL 憑證,請參閱個別語言或 Web 平台的檔。
在 Linux/Windows 容器中載入憑證
應用程式 WEBSITE_LOAD_CERTIFICATES 設定可讓您的 Windows 或 Linux 自定義容器(包括內建 Linux 容器)以檔案的形式存取指定的憑證。 這些檔案位於下列目錄底下:
| 容器平台 | 公開憑證 | 私人憑證 |
|---|---|---|
| Windows 容器 | C:\appservice\certificates\public |
C:\appservice\certificates\private |
| Linux 容器 | /var/ssl/certs |
/var/ssl/private |
憑證檔案名稱是憑證指紋。
備註
App Service 會將憑證路徑插入 Windows 容器,作為下列環境變數: WEBSITE_PRIVATE_CERTS_PATH、 WEBSITE_INTERMEDIATE_CERTS_PATH、 WEBSITE_PUBLIC_CERTS_PATH和 WEBSITE_ROOT_CERTS_PATH。 最好是使用環境變數來參考憑證路徑,而不是硬式編碼憑證路徑,以防未來憑證路徑變更。
此外, Windows Server Core 和 Windows Nano Server 容器 會在 中 LocalMachine\My自動將憑證載入證書存儲。 若要載入憑證,請遵循與 在 Windows 應用程式中載入憑證中顯示的相同模式。 針對以 Windows Nano 為基礎的容器,請使用檔案路徑,如 從檔案載入憑證所示。
下列 C# 程式代碼示範如何在 Linux 應用程式中載入公用憑證。
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/certs/<thumbprint>.der");
// Use the loaded certificate
下列 C# 程式代碼示範如何在 Linux 應用程式中載入私人憑證。
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/private/<thumbprint>.p12");
// Use the loaded certificate
若要瞭解如何從 Node.js、PHP、Python 或 Java 中的檔案載入 TLS/SSL 憑證,請參閱個別語言或 Web 平台的檔。
更新或續期憑證
當您更新憑證並將它新增至您的應用程式時,它會取得新的指紋,這些指紋也必須 可供存取。 其運作方式取決於您的憑證類型。
- 如果您在 中
WEBSITE_LOAD_CERTIFICATES明確列出指紋,請將新的指紋新增至應用程式設定。 - 如果
WEBSITE_LOAD_CERTIFICATES設定為*,請重新啟動應用程式,讓新的憑證可供存取。
如果您在 Azure Key Vault 中更新憑證,例如使用 App Service 憑證,則當您的應用程式與更新的憑證同步處理時,來自 Key Vault 的每日同步處理會自動進行必要的更新。
- 如果
WEBSITE_LOAD_CERTIFICATES包含更新憑證的舊指紋,則每日同步處理會自動將舊的指紋更新為新的指紋。 - 如果
WEBSITE_LOAD_CERTIFICATES設定為*,則每日同步處理可讓新的憑證自動存取。