Verwenden eines TLS-/SSL-Zertifikats in Ihrem Code in Azure App ServiceUse a TLS/SSL certificate in your code in Azure App Service

Sie können in Ihrem Anwendungscode auf die öffentlichen oder privaten Zertifikate zugreifen, die Sie App Service hinzufügen.In your application code, you can access the public or private certificates you add to App Service. Der App-Code kann als Client fungieren und auf einen externen Dienst mit erforderlicher Zertifikatauthentifizierung zugreifen oder ggf. kryptografische Aufgaben ausführen.Your app code may act as a client and access an external service that requires certificate authentication, or it may need to perform cryptographic tasks. Diese Schrittanleitung zeigt, wie Sie öffentliche oder private Zertifikate in Ihrem Anwendungscode verwenden.This how-to guide shows how to use public or private certificates in your application code.

Bei der Verwendung von Zertifikaten in Ihrem Code wird die TLS-Funktionalität in App Service genutzt. Dazu muss Ihre App im Tarif Basic oder höher ausgeführt werden.This approach to using certificates in your code makes use of the TLS functionality in App Service, which requires your app to be in Basic tier or above. Befindet sich Ihre App in der Ebene Free oder Shared , können Sie die Zertifikatsdatei in Ihr App-Repository aufnehmen.If your app is in Free or Shared tier, you can include the certificate file in your app repository.

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.When you let App Service manage your TLS/SSL certificates, you can maintain the certificates and your application code separately and safeguard your sensitive data.

VoraussetzungenPrerequisites

Im Rahmen dieser Schrittanleitung müssen Sie folgende Schritte durchführen:To follow this how-to guide:

Ermitteln des FingerabdrucksFind the thumbprint

Wählen Sie im Azure-Portal im linken Menü App Services > <app-name> aus.In the Azure portal, from the left menu, select App Services > <app-name>.

Wählen Sie im linken Navigationsbereich Ihrer App TLS-/SSL-Einstellungen und dann Private Schlüsselzertifikate (PFX) oder Öffentliche Schlüsselzertifikate (CER) aus.From the left navigation of your app, select TLS/SSL settings , then select Private Key Certificates (.pfx) or Public Key Certificates (.cer).

Ermitteln Sie das Zertifikat, das Sie verwenden möchten, und kopieren Sie den Fingerabdruck des Zertifikats.Find the certificate you want to use and copy the thumbprint.

Kopieren des Zertifikatfingerabdrucks

Sicherstellen, dass auf das Zertifikat zugegriffen werden kannMake the certificate accessible

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:To access a certificate in your app code, add its thumbprint to the WEBSITE_LOAD_CERTIFICATES app setting, by running the following command in the Cloud Shell:

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.To make all your certificates accessible, set the value to *.

Laden eines Zertifikats in Windows-AppsLoad certificate 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.The WEBSITE_LOAD_CERTIFICATES app setting makes the specified certificates accessible to your Windows hosted app in the Windows certificate store, in Current User\My.

In C#-Code greifen Sie auf das Zertifikat anhand des Zertifikatfingerabdrucks zu.In C# code, you access the certificate by the certificate thumbprint. Der folgende Code lädt ein Zertifikat mit dem Fingerabdruck E661583E8FABEF4C0BEF694CBC41C28FB81CD870.The following code loads a certificate with the thumbprint 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<X509Certificate>().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, avaliable 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).In Java code, you access the certificate from the "Windows-MY" store using the Subject Common Name field (see Public key certificate). Der folgende Code zeigt, wie Sie ein Zertifikat für einen privaten Schlüssel laden:The following code shows how to load a private key certificate:

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
...

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.For languages that don't support or offer insufficient support for the Windows certificate store, see Load certificate from file.

Laden des Zertifikats aus einer DateiLoad certificate from file

Wenn Sie eine manuell hochgeladene Zertifikatsdatei laden müssen, sollte der Upload eher über FTPS statt beispielsweise über Git erfolgen.If you need to load a certificate file that you upload manually, it's better to upload the certificate using FTPS instead of Git, for example. Halten Sie vertrauliche Daten wie beispielsweise ein privates Zertifikat aus der Quellcodeverwaltung heraus.You should keep sensitive data like a private certificate out of source control.

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.ASP.NET and ASP.NET Core on Windows must access the certificate store even if you load a certificate from a file. Laden Sie zum Laden einer Zertifikatsdatei in eine Windows .NET-App das aktuelle Benutzerprofil mit dem folgenden Befehl in Cloud Shell:To load a certificate file in a Windows .NET app, load the current user profile with the following command in the 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 im Tarif Basic oder höher ausgeführt werden.This approach to using certificates in your code makes use of the TLS functionality in App Service, which requires your app to be in Basic tier or above.

Im folgenden C#-Beispiel wird ein öffentliches Zertifikat aus einem relativen Pfad in die App geladen:The following C# example loads a public certificate from a relative path in your app:

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

Informationen zum Laden eines TLS-/SSL-Zertifikats aus einer Datei in Node.js, PHP, Python, Java oder Ruby finden Sie in der Dokumentation für die jeweilige Sprache oder Webplattform.To see how to load a TLS/SSL certificate from a file in Node.js, PHP, Python, Java, or Ruby, see the documentation for the respective language or web platform.

Laden eines Zertifikats in Linux-/Windows-ContainernLoad certificate in Linux/Windows containers

Die App-Einstellung WEBSITE_LOAD_CERTIFICATES macht die angegebenen Zertifikate für Ihre Windows- oder Linux-Container-Apps (einschließlich integrierter Linux-Container) als Dateien zugänglich.The WEBSITE_LOAD_CERTIFICATES app settings makes the specified certificates accessible to your Windows or Linux container apps (including built-in Linux containers) as files. Die Dateien befinden sich in den folgenden Verzeichnissen:The files are found under the following directories:

ContainerplattformContainer platform Öffentliche ZertifikatePublic certificates Private ZertifikatePrivate certificates
Windows-ContainerWindows container C:\appservice\certificates\public C:\appservice\certificates\private
Linux-ContainerLinux container /var/ssl/certs /var/ssl/private

Die Zertifikatsdateinamen sind die Zertifikatfingerabdrücke.The certificate file names are the certificate thumbprints.

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.App Service inject the certificate paths into Windows containers as the following environment variables WEBSITE_PRIVATE_CERTS_PATH, WEBSITE_INTERMEDIATE_CERTS_PATH, WEBSITE_PUBLIC_CERTS_PATH, and WEBSITE_ROOT_CERTS_PATH. 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.It's better to reference the certificate path with the environment variables instead of hardcoding the certificate path, in case the certificate paths change in the future.

Darüber hinaus laden Windows Server Core-Container die Zertifikate automatisch in den Zertifikatspeicher (in LocalMachine\My ).In addition, Windows Server Core containers load the certificates into the certificate store automatically, in LocalMachine\My. Verwenden Sie zum Laden der Zertifikate das gleiche Muster wie beim Laden eines Zertifikats in Windows-Apps.To load the certificates, follow the same pattern as Load certificate in Windows apps. Verwenden Sie für Windows Nano-basierte Container die oben angegebenen Dateipfade, um das Zertifikat direkt aus der Datei zu laden.For Windows Nano based containers, use the file paths provided above to Load the certificate directly from file.

Der folgende C#-Code zeigt, wie ein öffentliches Zertifikat in eine Linux-App geladen wird.The following C# code shows how to load a public certificate in a Linux app.

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

Informationen zum Laden eines TLS-/SSL-Zertifikats aus einer Datei in Node.js, PHP, Python, Java oder Ruby finden Sie in der Dokumentation für die jeweilige Sprache oder Webplattform.To see how to load a TLS/SSL certificate from a file in Node.js, PHP, Python, Java, or Ruby, see the documentation for the respective language or web platform.

Weitere RessourcenMore resources