Delen via


TLS/SSL-certificaten gebruiken in uw toepassingscode

Belangrijk

Vanaf 28 juli 2025 hebben wijzigingen in door App Service beheerde certificaten (ASMC) invloed op de wijze waarop certificaten worden uitgegeven en vernieuwd in bepaalde scenario's. Hoewel de meeste klanten geen actie hoeven te ondernemen, raden we u aan onze gedetailleerde blogpost van ASMC te bekijken voor meer informatie.

In uw toepassingscode hebt u toegang tot de openbare of persoonlijke certificaten die u aan Azure App Service toevoegt. Uw app-code kan fungeren als een client en toegang krijgen tot een externe service waarvoor certificaatverificatie is vereist. Het kan ook nodig zijn om cryptografische taken uit te voeren. In dit artikel wordt beschreven hoe u openbare of persoonlijke certificaten gebruikt in uw toepassingscode.

Deze benadering voor het gebruik van certificaten in uw code maakt gebruik van de TLS-functionaliteit (Transport Layer Security) in App Service. Hiervoor moet uw app zich in de Basic-laag of hoger bevinden. Als uw app zich in de laag Gratis of Gedeeld bevindt, kunt u het certificaatbestand opnemen in uw app-opslagplaats.

Wanneer u App Service uw SSL-certificaten (TLS/Secure Sockets Layer) laat beheren, kunt u de certificaten en uw toepassingscode afzonderlijk onderhouden en uw gevoelige gegevens beveiligen.

Vereiste voorwaarden

Als u dit artikel wilt volgen, raadpleegt u:

De vingerafdruk zoeken

  1. Selecteer in de Azure Portal in het linkerdeelvenster App Services> de <>.

  2. Selecteer Certificaten in het linkerdeelvenster van uw app. Selecteer vervolgens Gebruik uw eigen certificaten (.pfx) of Certificaten van de openbare sleutel (.cer).

  3. Zoek het certificaat dat u wilt gebruiken en kopieer de vingerafdruk.

Schermopname van het kopiëren van de vingerafdruk van het certificaat.

Het certificaat toegankelijk maken

Als u toegang wilt krijgen tot een certificaat in uw app-code, voegt u de vingerafdruk toe aan de WEBSITE_LOAD_CERTIFICATES app-instelling. Voer de volgende opdracht uit in Azure Cloud Shell:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>

Als u al uw certificaten toegankelijk wilt maken, stelt u de waarde in op *.

Wanneer WEBSITE_LOAD_CERTIFICATES wordt ingesteld op *, zijn alle eerder toegevoegde certificaten toegankelijk voor toepassingscode. Als u later een certificaat aan uw app toevoegt, start u de app opnieuw om het nieuwe certificaat toegankelijk te maken voor uw app. Zie Een certificaat bijwerken of vernieuwen voor meer informatie.

Certificaten laden in Windows-apps

De WEBSITE_LOAD_CERTIFICATES app-instelling maakt de opgegeven certificaten toegankelijk voor uw door Windows gehoste app in het Windows-certificaatarchief, in Current User\My.

In C#-code opent u het certificaat met behulp van de vingerafdruk van het certificaat. Met de volgende code wordt een certificaat geladen met de vingerafdruk 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 opent u het certificaat uit het Windows-MY archief met behulp van het veld Algemene naam onderwerp . Zie Openbare-sleutelcertificaat voor meer informatie. De volgende code laat zien hoe u een certificaat met een persoonlijke sleutel laadt:

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

Zie Een certificaat uit een bestand laden voor talen die geen ondersteuning bieden of onvoldoende ondersteuning bieden voor het Windows-certificaatarchief.

Een certificaat uit een bestand laden

Als u een certificaatbestand moet laden dat u handmatig uploadt, is het beter om het certificaat te uploaden met behulp van File Transfer Protocol Secure (FTPS) in plaats van Git, bijvoorbeeld. Houd gevoelige gegevens, zoals een privécertificaat, buiten broncodebeheer.

ASP.NET en ASP.NET Core in Windows moeten toegang hebben tot het certificaatarchief, zelfs als u een certificaat uit een bestand laadt. Als u een certificaatbestand wilt laden in een Windows .NET-app, laadt u het huidige gebruikersprofiel met de volgende opdracht in Cloud Shell:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1

Deze benadering voor het gebruik van certificaten in uw code maakt gebruik van de TLS-functionaliteit in App Service. Hiervoor moet uw app zich in de Basic-laag of hoger bevinden.

In het volgende C#-voorbeeld wordt een openbaar certificaat uit een relatief pad in uw app geladen:

using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;

...

var cert = X509CertificateLoader.LoadCertificateFromFile("~/<relative-path-to-cert-file>");

// Use the loaded certificate

Als u wilt zien hoe u een TLS/SSL-certificaat laadt vanuit een bestand in Node.js, PHP, Python of Java, raadpleegt u de documentatie voor de betreffende taal of het desbetreffende webplatform.

Certificaten laden in Linux-/Windows-containers

De WEBSITE_LOAD_CERTIFICATES app-instelling maakt de opgegeven certificaten toegankelijk voor uw aangepaste Windows- of Linux-containers (inclusief ingebouwde Linux-containers) als bestanden. De bestanden vindt u in de volgende mappen:

Containerplatform Openbare certificaten Privécertificaten
Windows-container C:\appservice\certificates\public C:\appservice\certificates\private
Linux-container /var/ssl/certs /var/ssl/private

De namen van certificaatbestanden zijn de vingerafdruk van het certificaat.

Notitie

App Service injecteert de certificaatpaden in Windows-containers als de volgende omgevingsvariabelen: WEBSITE_PRIVATE_CERTS_PATH, WEBSITE_INTERMEDIATE_CERTS_PATH, WEBSITE_PUBLIC_CERTS_PATHen WEBSITE_ROOT_CERTS_PATH. Het is beter om het certificaatpad te verwijzen met de omgevingsvariabelen in plaats van het certificaatpad hard in te bedden, wanneer de certificaatpaden in de toekomst veranderen.

Bovendien laden Windows Server Core- en Windows Nano Server-containers de certificaten automatisch in het certificaatarchief, in LocalMachine\My. Als u de certificaten wilt laden, volgt u hetzelfde patroon als in Certificaten laden in Windows-apps. Voor Windows Nano-containers gebruikt u de bestandspaden zoals wordt weergegeven in Een certificaat uit een bestand laden.

De volgende C#-code laat zien hoe u een openbaar certificaat in een Linux-app laadt.

using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;

...

var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/certs/<thumbprint>.der");

// Use the loaded certificate

De volgende C#-code laat zien hoe u een privécertificaat in een Linux-app laadt.

using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;

...

var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/private/<thumbprint>.p12");

// Use the loaded certificate

Als u wilt zien hoe u een TLS/SSL-certificaat laadt vanuit een bestand in Node.js, PHP, Python of Java, raadpleegt u de documentatie voor de betreffende taal of het desbetreffende webplatform.

Een certificaat bijwerken of vernieuwen

Wanneer u een certificaat verlengt en aan uw app toevoegt, krijgt deze een nieuwe vingerafdruk, die ook toegankelijk moet worden gemaakt. Hoe het werkt, is afhankelijk van uw certificaattype.

Als u het openbare of persoonlijke certificaat handmatig uploadt:

  • Als u de vingerafdruk expliciet in WEBSITE_LOAD_CERTIFICATESeen lijst opgeeft, voegt u de nieuwe vingerafdruk toe aan de app-instelling.
  • Als WEBSITE_LOAD_CERTIFICATES is ingesteld op *, herstart de app om het nieuwe certificaat toegankelijk te maken.

Als u een certificaat in Azure Key Vault vernieuwt, zoals met een App Service-certificaat, wordt de dagelijkse synchronisatie vanuit Key Vault automatisch bijgewerkt wanneer uw app wordt gesynchroniseerd met het vernieuwde certificaat.

  • Als WEBSITE_LOAD_CERTIFICATES de oude vingerafdruk van uw vernieuwde certificaat bevat, werkt de dagelijkse synchronisatie de oude vingerafdruk automatisch bij naar de nieuwe vingerafdruk.
  • Als WEBSITE_LOAD_CERTIFICATES is ingesteld op *, zorgt de dagelijkse synchronisatie ervoor dat het nieuwe certificaat automatisch toegankelijk wordt.