Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden eines TLS-/SSL-Zertifikats in Ihrem Code in Azure App Service
Artikel
08.05.2024
Sie können in Ihrem Anwendungscode auf die öffentlichen oder privaten Zertifikate zugreifen, die Sie App Service hinzufügen. Der App-Code kann als Client fungieren und auf einen externen Dienst mit erforderlicher Zertifikatauthentifizierung zugreifen oder ggf. kryptografische Aufgaben ausführen. Diese Schrittanleitung zeigt, wie Sie öffentliche oder private Zertifikate in Ihrem Anwendungscode verwenden.
Bei der Verwendung von Zertifikaten in Ihrem Code wird die TLS-Funktionalität in App Service genutzt. Dazu muss Ihre App auf der Ebene Basic oder höher ausgeführt werden. Befindet sich Ihre App in der Ebene Free oder Shared, können Sie die Zertifikatsdatei in Ihr App-Repository aufnehmen.
Wenn Sie Ihre TLS-/SSL-Zertifikate über App Service verwalten, können Sie die Zertifikate und Ihren Anwendungscode separat verwalten und Ihre sensiblen Daten schützen.
Voraussetzungen
Im Rahmen dieser Schrittanleitung müssen Sie folgende Schritte durchführen:
Wählen Sie im Azure-Portal im linken Menü App Services><App-Name> aus.
Wählen Sie in der linken Navigation Ihrer App Zertifikate und dann Eigene Zertifikate (.pfx) mitbringen oder Öffentliche Zertifikatsschlüssel (.cer) aus.
Ermitteln Sie das Zertifikat, das Sie verwenden möchten, und kopieren Sie den Fingerabdruck des Zertifikats.
Sicherstellen, dass auf das Zertifikat zugegriffen werden kann
Fügen Sie zum Zugreifen auf ein Zertifikat in Ihrem App-Code der App-Einstellung WEBSITE_LOAD_CERTIFICATES den Fingerabdruck hinzu, indem Sie den folgenden Befehl in Cloud Shell ausführen:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>
Damit auf alle Zertifikate zugegriffen werden kann, legen Sie den Wert auf * fest.
Hinweis
Wenn WEBSITE_LOAD_CERTIFICATES auf * festgelegt ist, kann auf alle zuvor hinzugefügten Zertifikate durch Anwendungscode zugegriffen werden. Wenn Sie Ihrer App später ein Zertifikat hinzufügen, starten Sie die App neu, um das neue Zertifikat für Ihre App zugänglich zu machen. Weitere Informationen finden Sie unter Aktualisieren (Verlängern) eines Zertifikats.
Laden eines Zertifikats in Windows-Apps
Die App-Einstellung WEBSITE_LOAD_CERTIFICATES macht die angegebenen Zertifikate für Ihre unter Windows gehostete App im Windows-Zertifikatspeicher in Current User\My zugänglich.
In C#-Code greifen Sie auf das Zertifikat anhand des Zertifikatfingerabdrucks zu. Der folgende Code lädt ein Zertifikat mit dem Fingerabdruck 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
}
In Java-Code greifen Sie über den Speicher „Windows-MY“ unter Verwendung des Felds für den Antragstellernamen auf das Zertifikat zu (siehe Öffentliches Schlüsselzertifikat). Der folgende Code zeigt, wie Sie ein Zertifikat für einen privaten Schlüssel laden:
Informationen zu Sprachen, die keine Unterstützung oder nur unzureichende Unterstützung für den Windows-Zertifikatspeicher bieten, finden Sie unter Laden des Zertifikats aus einer Datei.
Laden des Zertifikats aus einer Datei
Wenn Sie eine manuell hochgeladene Zertifikatsdatei laden müssen, sollte der Upload eher über FTPS statt beispielsweise über Git erfolgen. Halten Sie vertrauliche Daten wie beispielsweise ein privates Zertifikat aus der Quellcodeverwaltung heraus.
Hinweis
ASP.NET und ASP.NET Core unter Windows müssen auf den Zertifikatspeicher auch dann zugreifen, wenn Sie ein Zertifikat aus einer Datei laden. Laden Sie zum Laden einer Zertifikatsdatei in eine Windows .NET-App das aktuelle Benutzerprofil mit dem folgenden Befehl in Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
Bei der Verwendung von Zertifikaten in Ihrem Code wird die TLS-Funktionalität in App Service genutzt. Dazu muss Ihre App auf der Ebene Basic oder höher ausgeführt werden.
Im folgenden C#-Beispiel wird ein öffentliches Zertifikat aus einem relativen Pfad in die App geladen:
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("~/<relative-path-to-cert-file>");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Wie Sie ein TLS/SSL-Zertifikat aus einer Datei in Node.js, PHP, Python oder Java laden können, erfahren Sie in der Dokumentation der jeweiligen Sprache oder Webplattform.
Laden eines Zertifikats in Linux-/Windows-Containern
Die WEBSITE_LOAD_CERTIFICATES App-Einstellung macht die angegebenen Zertifikate für Ihre benutzerdefinierten Windows- oder Linux-Container (einschließlich integrierte Linux-Container) als Dateien zugänglich. Die Dateien befinden sich in den folgenden Verzeichnissen:
Containerplattform
Öffentliche Zertifikate
Private Zertifikate
Windows-Container
C:\appservice\certificates\public
C:\appservice\certificates\private
Linux-Container
/var/ssl/certs
/var/ssl/private
Die Zertifikatsdateinamen sind die Zertifikatfingerabdrücke.
Hinweis
Von App Service werden die Zertifikatpfade in Windows-Container als Umgebungsvariablen (WEBSITE_PRIVATE_CERTS_PATH, WEBSITE_INTERMEDIATE_CERTS_PATH, WEBSITE_PUBLIC_CERTS_PATH und WEBSITE_ROOT_CERTS_PATH) eingefügt. Für den Fall, dass sich die Zertifikatpfade später ändern, ist es besser, auf den Zertifikatpfad mit den Umgebungsvariablen zu verweisen, anstatt einen hartcodierten Zertifikatpfad zu verwenden.
Der folgende C#-Code zeigt, wie ein öffentliches Zertifikat in eine Linux-App geladen wird.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("/var/ssl/certs/<thumbprint>.der");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Der folgende C#-Code zeigt, wie ein privates Zertifikat in eine Linux-App geladen wird.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("/var/ssl/private/<thumbprint>.p12");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Das folgende C#-Beispiel zeigt, wie ein öffentliches Zertifikat in einer .NET Framework-App in einem Windows Server Core-Container geladen wird.
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
string certThumbprint = "E661583E8FABEF4C0BEF694CBC41C28FB81CD870";
bool validOnly = false;
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
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
}
Das folgende C#-Beispiel zeigt, wie ein öffentliches Zertifikat in einer .NET Core-App in einem Windows Server Core- oder Windows Nano Server-Container geladen wird.
using System.Security.Cryptography.X509Certificates;
string Thumbprint = "C0CF730E216F5D690D1834446554DF5DC577A78B";
using X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
{
store.Open(OpenFlags.ReadOnly);
// Get the first cert with the thumbprint
var certificate = store.Certificates.OfType<X509Certificate2>()
.First(c => c.Thumbprint == Thumbprint) ?? throw new Exception($"Certificate with thumbprint {Thumbprint} was not found");
// Use certificate
ViewData["certificateDetails"] = certificate.IssuerName.Name.ToString();
}
Wie Sie ein TLS/SSL-Zertifikat aus einer Datei in Node.js, PHP, Python oder Java laden können, erfahren Sie in der Dokumentation der jeweiligen Sprache oder Webplattform.
Aktualisieren (Verlängern) eines Zertifikats
Wenn Sie ein Zertifikat erneuern und Ihrer App hinzufügen, erhält es einen neuen Fingerabdruck, der ebenfalls zugänglich gemacht werden muss. Die Funktionsweise hängt von Ihrem Zertifikattyp ab.
Wenn Sie Fingerabdrücke explizit in WEBSITE_LOAD_CERTIFICATES auflisten, fügen Sie der App-Einstellung den neuen Fingerabdruck hinzu.
Wenn WEBSITE_LOAD_CERTIFICATES auf * festgelegt ist, starten Sie die App neu, um Zugriff auf das neue Zertifikat zu ermöglichen.
Wenn Sie ein Zertifikat in Key Vault erneuern, z. B. mit einem App Service-Zertifikat, führt die tägliche Synchronisierung von Key Vault das erforderliche Update automatisch durch, wenn Ihre App mit dem erneuerten Zertifikat synchronisiert wird.
Wenn WEBSITE_LOAD_CERTIFICATES den alten Fingerabdruck Ihres erneuerten Zertifikats enthält, aktualisiert die tägliche Synchronisierung den alten Fingerabdruck automatisch auf den neuen Fingerabdruck.
Wenn WEBSITE_LOAD_CERTIFICATES auf * festgelegt ist, wird der Zugriff auf das neue Zertifikat durch die tägliche Synchronisierung automatisch ermöglicht.
Erläutern der Verwendung von Zertifikaten in einer App Service-Umgebung. Informieren Sie sich über die Funktionsweise von Zertifikatbindungen für Apps mit einem einzelnen Mandanten in einer App Service-Umgebung.
Erstellen Sie ein kostenloses Zertifikat, importieren Sie ein App Service-Zertifikat, importieren Sie ein Key Vault-Zertifikat, oder erwerben Sie ein App Service-Zertifikat in Azure App Service.
Erfahren Sie, wie Clientzertifikate mit TLS authentifiziert werden. Azure App Service kann das Clientzertifikat für den App-Code zur Überprüfung verfügbar machen.
Tragen Sie zum Schutz des HTTPS-Zugriffs auf Ihre benutzerdefinierte Domäne durch Erstellung einer TLS/SSL-Bindung mit einem Zertifikat bei. Verbessern Sie die Sicherheit Ihrer Website, indem Sie HTTPS oder TLS 1.2 erzwingen.
Hier finden Sie Lösungen für häufige Probleme, die beim Konfigurieren einer Domäne oder eines TLS/SSL-Zertifikats in Azure App Service auftreten können.
Erstellen von End-to-End-Lösungen in Microsoft Azure zum Erstellen von Azure Functions-Lösungen, Implementieren und Verwalten von Web-Apps, Entwickeln von Lösungen mit Azure Storage u. v. m.