Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans votre code d’application, vous pouvez accéder aux certificats publics ou privés que vous ajoutez à Azure App Service. Votre code d’application peut agir en tant que client et accéder à un service externe qui nécessite une authentification par certificat. Il peut également être nécessaire d’effectuer des tâches de chiffrement. Cet article explique comment utiliser des certificats publics ou privés dans votre code d’application.
Cette approche de l’utilisation de certificats dans votre code utilise la fonctionnalité TLS (Transport Layer Security) dans App Service, ce qui nécessite que votre application soit au niveau De base ou supérieur. Si votre application se trouve dans le niveau Gratuit ou Partagé, vous pouvez inclure le fichier de certificat dans votre référentiel d’applications.
Lorsque vous laissez App Service gérer vos certificats TLS/Secure Sockets Layer (SSL), vous pouvez conserver les certificats et le code de votre application séparément et protéger vos données sensibles.
Conditions préalables
Pour suivre cet article, consultez :
Trouver l’empreinte de pouce
Dans le portail Azure, dans le volet gauche, sélectionnez App Services><app-name>.
Dans le volet gauche de votre application, sélectionnez Certificats. Sélectionnez ensuite Importer vos propres certificats (.pfx) ou Certificats de clé publique (.cer).
Recherchez le certificat que vous souhaitez utiliser et copiez l’empreinte numérique.
Rendre le certificat accessible
Pour accéder à un certificat dans le code de votre application, ajoutez son empreinte numérique au paramètre de l’application WEBSITE_LOAD_CERTIFICATES
. Exécutez la commande suivante dans Azure Cloud Shell :
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>
Pour rendre tous vos certificats accessibles, définissez la valeur sur *
.
Lorsqu’WEBSITE_LOAD_CERTIFICATES
est défini sur *
, tous les certificats précédemment ajoutés sont accessibles au code de l’application. Si vous ajoutez un certificat à votre application ultérieurement, redémarrez l’application pour rendre le nouveau certificat accessible à votre application. Pour plus d’informations, consultez Mettre à jour ou renouveler un certificat.
Charger des certificats dans les applications Windows
Le paramètre de l'application WEBSITE_LOAD_CERTIFICATES
rend les certificats spécifiés accessibles à votre application hébergée sur Windows dans le magasin de certificats Windows, sous Utilisateur actuel\Mes.
Dans le code C#, vous accédez au certificat à l’aide de l’empreinte numérique du certificat. Le code suivant charge un certificat avec l’empreinte numérique 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
}
Dans le code Java, vous accédez au certificat à partir du Windows-MY
dépôt en utilisant le champ Nom commun du sujet. Pour plus d’informations, consultez Certificat de clé publique. Le code suivant montre comment charger un certificat de clé privé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
...
Pour les langues qui ne prennent pas en charge ou offrent un soutien insuffisant pour le magasin de certificats Windows, consultez Charger un certificat à partir d’un fichier.
Charger un certificat à partir d’un fichier
Si vous devez charger un fichier de certificat que vous chargez manuellement, il est préférable de charger le certificat à l’aide du protocole FTPS (File Transfer Protocol Secure) au lieu de Git, par exemple. Conservez des données sensibles comme un certificat privé hors contrôle de code source.
ASP.NET et ASP.NET Core sur Windows doivent accéder au magasin de certificats même si vous chargez un certificat à partir d’un fichier. Pour charger un fichier de certificat dans une application Windows .NET, chargez le profil utilisateur actuel avec la commande suivante dans Cloud Shell :
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
Cette approche de l’utilisation de certificats dans votre code utilise la fonctionnalité TLS dans App Service, ce qui nécessite que votre application soit au niveau De base ou supérieur.
L’exemple C# suivant charge un certificat public à partir d’un chemin relatif dans votre application :
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
Pour savoir comment charger un certificat TLS/SSL à partir d’un fichier dans Node.js, PHP, Python ou Java, consultez la documentation relative au langage ou à la plateforme web respectifs.
Charger des certificats dans des conteneurs Linux/Windows
Le WEBSITE_LOAD_CERTIFICATES
paramètre d’application rend les certificats spécifiés accessibles à vos conteneurs personnalisés Windows ou Linux (y compris les conteneurs Linux intégrés) en tant que fichiers. Les fichiers se trouvent sous les répertoires suivants :
Plateforme de conteneurs | Certificats publics | Certificats privés |
---|---|---|
Conteneur Windows | C:\appservice\certificates\public |
C:\appservice\certificates\private |
Conteneur Linux | /var/ssl/certs |
/var/ssl/private |
Les noms de fichiers de certificat sont les empreintes numériques du certificat.
Remarque
App Service injecte les chemins de certificat dans les conteneurs Windows en tant que variables d’environnement suivantes : WEBSITE_PRIVATE_CERTS_PATH
, , WEBSITE_INTERMEDIATE_CERTS_PATH
WEBSITE_PUBLIC_CERTS_PATH
et WEBSITE_ROOT_CERTS_PATH
. Il est préférable de référencer le chemin du certificat avec les variables d’environnement au lieu de coder en dur le chemin du certificat, au cas où les chemins de certificat changent à l’avenir.
En outre, les conteneurs Windows Server Core et Windows Nano Server chargent automatiquement les certificats dans le magasin de certificats, dans LocalMachine\My
. Pour charger les certificats, suivez le même modèle que celui indiqué dans Charger des certificats dans les applications Windows. Pour les conteneurs Windows Nano, utilisez les chemins d’accès aux fichiers, comme indiqué dans Charger un certificat à partir d’un fichier.
Le code C# suivant montre comment charger un certificat public dans une application Linux.
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
Le code C# suivant montre comment charger un certificat privé dans une application Linux.
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
Pour savoir comment charger un certificat TLS/SSL à partir d’un fichier dans Node.js, PHP, Python ou Java, consultez la documentation relative au langage ou à la plateforme web respectifs.
Mettre à jour ou renouveler un certificat
Lorsque vous renouvelez un certificat et que vous l’ajoutez à votre application, il obtient une nouvelle empreinte numérique, qui doit également être rendue accessible. Le fonctionnement dépend de votre type de certificat.
Si vous chargez manuellement le certificat public ou privé :
- Si vous listez explicitement les empreintes dans
WEBSITE_LOAD_CERTIFICATES
, ajoutez la nouvelle empreinte au paramètre d’application. - Si
WEBSITE_LOAD_CERTIFICATES
est défini sur*
, redémarrez l'application pour rendre le nouveau certificat accessible.
Si vous renouvelez un certificat dans Azure Key Vault, par exemple avec un certificat App Service, la synchronisation quotidienne à partir de Key Vault rend la mise à jour nécessaire automatiquement lorsque votre application se synchronise avec le certificat renouvelé.
- Si
WEBSITE_LOAD_CERTIFICATES
contient l'ancienne empreinte de votre certificat renouvelé, la synchronisation quotidienne met automatiquement à jour l'ancienne empreinte vers la nouvelle. - Si
WEBSITE_LOAD_CERTIFICATES
est défini sur*
, la synchronisation quotidienne rend le nouveau certificat accessible automatiquement.