Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Od 28. července 2025 budou změny spravovaných certifikátů služby App Service (ASMC) mít vliv na vydávání a obnovování certifikátů v určitých scénářích. I když většina zákazníků nemusí podnikat kroky, doporučujeme projít si podrobný blogový příspěvek ASMC, kde najdete další informace.
V kódu aplikace můžete přistupovat k veřejným nebo privátním certifikátům, které přidáte do služby Azure App Service. Kód aplikace může fungovat jako klient a přistupovat k externí službě, která vyžaduje ověření certifikátu. Může také potřebovat provádět kryptografické úlohy. Tento článek ukazuje, jak používat veřejné nebo privátní certifikáty v kódu aplikace.
Tento přístup k používání certifikátů v kódu využívá funkci TLS (Transport Layer Security) ve službě App Service, která vyžaduje, aby vaše aplikace byla na úrovni Basic nebo vyšší. Pokud je vaše aplikace na úrovni Free nebo Shared, můžete soubor certifikátu zahrnout do úložiště aplikace.
Když službě App Service umožníte spravovat certifikáty TLS/Secure Sockets Layer (SSL), můžete certifikáty a kód aplikace udržovat samostatně a chránit citlivá data.
Požadavky
Pokud chcete postupovat podle tohoto článku, přečtěte si:
Vyhledání otisku palce
Na Azure portal v levém podokně vyberte App Services>.
V levém podokně aplikace vyberte Certifikáty. Pak vyberte Možnost Přineste si vlastní certifikáty (.pfx) nebo Certifikáty veřejného klíče (.cer).
Vyhledejte certifikát, který chcete použít, a zkopírujte kryptografický otisk.
Zpřístupnění certifikátu
Pokud chcete získat přístup k certifikátu v kódu aplikace, přidejte jeho kryptografický otisk do WEBSITE_LOAD_CERTIFICATES nastavení aplikace. Spusťte následující příkaz v Azure Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>
Pokud chcete zpřístupnit všechny certifikáty, nastavte hodnotu na *.
Pokud WEBSITE_LOAD_CERTIFICATES je nastavená hodnota *, všechny dříve přidané certifikáty jsou přístupné pro kód aplikace. Pokud do aplikace později přidáte certifikát, restartujte aplikaci, aby byl nový certifikát přístupný pro vaši aplikaci. Další informace najdete v tématu Aktualizace nebo obnovení certifikátu.
Načtení certifikátů v aplikacích pro Windows
Nastavení WEBSITE_LOAD_CERTIFICATES aplikace zpřístupňuje zadané certifikáty vaší ve Windows hostované aplikaci v úložišti certifikátů pro Windows v sekci Aktuální uživatel\My.
V kódu jazyka C# získáte přístup k certifikátu pomocí kryptografického otisku certifikátu. Následující kód načte certifikát s kryptografickým otiskem 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
}
V kódu Jazyka Java přistupujete k certifikátu z Windows-MY úložiště pomocí pole Běžný název subjektu . Další informace najdete v tématu Certifikát veřejného klíče. Následující kód ukazuje, jak načíst certifikát privátního klíče:
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
...
Informace o jazycích, které nepodporují úložiště certifikátů Windows nebo nenabízí dostatečnou podporu, najdete v tématu Načtení certifikátu ze souboru.
Načtení certifikátu ze souboru
Pokud potřebujete načíst soubor certifikátu, který nahráváte ručně, je lepší certifikát nahrát pomocí protokolu FTPS (File Transfer Protocol Secure) místo Gitu. Udržujte citlivá data jako soukromý certifikát mimo správu zdrojového kódu.
ASP.NET a ASP.NET Core ve Windows musí přistupovat k úložišti certifikátů, i když načtete certifikát ze souboru. Pokud chcete načíst soubor certifikátu v aplikaci Windows .NET, načtěte aktuální profil uživatele pomocí následujícího příkazu v Cloud Shellu:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
Tento přístup k používání certifikátů ve vašem kódu využívá funkci TLS ve službě App Service, která vyžaduje, aby vaše aplikace byla na úrovni Basic nebo vyšší.
Následující příklad jazyka C# načte veřejný certifikát z relativní cesty v aplikaci:
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("~/<relative-path-to-cert-file>");
// Use the loaded certificate
Informace o načtení certifikátu TLS/SSL ze souboru v Node.js, PHP, Pythonu nebo Javě najdete v dokumentaci pro příslušný jazyk nebo webovou platformu.
Načtení certifikátů v kontejnerech Linuxu a Windows
Nastavení WEBSITE_LOAD_CERTIFICATES aplikace zpřístupňuje zadané certifikáty vašim vlastním kontejnerům Windows nebo Linuxu (včetně integrovaných kontejnerů Linuxu) jako souborů. Soubory jsou nalezeny v následujících adresářích:
| Kontejnerová platforma | Veřejné certifikáty | Privátní certifikáty |
|---|---|---|
| Kontejner Windows | C:\appservice\certificates\public |
C:\appservice\certificates\private |
| Kontejner Linuxu | /var/ssl/certs |
/var/ssl/private |
Názvy souborů certifikátu jsou kryptografické otisky certifikátu.
Poznámka:
App Service vkládá cesty certifikátů do kontejnerů Windows jako následující proměnné prostředí: WEBSITE_PRIVATE_CERTS_PATH, WEBSITE_INTERMEDIATE_CERTS_PATH, WEBSITE_PUBLIC_CERTS_PATHa WEBSITE_ROOT_CERTS_PATH. Místo pevného zakódování cesty certifikátu je lepší nastavit cestu pomocí proměnných prostředí, pro případ, že se cesty k certifikátu v budoucnu změní.
Kromě toho kontejnery Windows Server Core a Windows Nano Server načítají certifikáty do úložiště certifikátů automaticky v LocalMachine\My. Pokud chcete certifikáty načíst, postupujte podle stejného vzoru, jak je znázorněno v tématu Načíst certifikáty v aplikacích pro Windows. V případě kontejnerů založených na Nano systému Windows použijte cesty k souborům, jak je znázorněno v části Načtení certifikátu ze souboru.
Následující kód jazyka C# ukazuje, jak načíst veřejný certifikát v aplikaci pro Linux.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/certs/<thumbprint>.der");
// Use the loaded certificate
Následující kód jazyka C# ukazuje, jak načíst privátní certifikát v aplikaci pro Linux.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/private/<thumbprint>.p12");
// Use the loaded certificate
Informace o načtení certifikátu TLS/SSL ze souboru v Node.js, PHP, Pythonu nebo Javě najdete v dokumentaci pro příslušný jazyk nebo webovou platformu.
Aktualizace nebo obnovení certifikátu
Když prodloužíte certifikát a přidáte ho do aplikace, získá nový kryptografický otisk, který také musí být přístupný. Jak to funguje, závisí na typu certifikátu.
Pokud ručně nahrajete veřejný nebo privátní certifikát:
- Pokud explicitně vypíšete otisky palců v
WEBSITE_LOAD_CERTIFICATES, přidejte nový otisk palce do nastavení aplikace. - Pokud
WEBSITE_LOAD_CERTIFICATESje nastavená hodnota*, restartujte aplikaci, aby byl nový certifikát přístupný.
Pokud obnovíte certifikát ve službě Azure Key Vault, například pomocí certifikátu služby App Service, provede denní synchronizace ze služby Key Vault potřebnou aktualizaci automaticky, když se vaše aplikace synchronizuje s obnoveným certifikátem.
- Pokud
WEBSITE_LOAD_CERTIFICATESobsahuje starý kryptografický otisk obnoveného certifikátu, denní synchronizace aktualizuje starý kryptografický otisk na nový kryptografický otisk automaticky. - Pokud
WEBSITE_LOAD_CERTIFICATESje nastavená hodnota*, denní synchronizace automaticky zpřístupní nový certifikát.