Créer un certificat public auto-signé pour authentifier votre application

Microsoft Entra ID prend en charge deux types d’authentification pour les principaux de service :  l’authentification par mot de passe (secret d’application) et l’authentification par certificat. Même si les secrets d’application peuvent facilement être créés dans le portail Azure ou en utilisant une API Microsoft comme Microsoft Graph, ils sont de longue durée et pas aussi sécurisés que les certificats. Il est donc recommandé que votre application utilise un certificat plutôt qu’un secret.

À des fins de test, vous pouvez utiliser un certificat public auto-signé au lieu d’un certificat signé par une autorité de certification. Dans cet article pratique, vous allez utiliser PowerShell pour créer et exporter un certificat auto-signé.

Attention

Les certificats auto-signés sont des certificats numériques qui ne sont pas signés par une autorité de certification tierce approuvée. Les certificats auto-signés sont créés, émis et signés par l’entreprise ou le développeur responsable du site web ou du logiciel signé. C’est pourquoi les certificats auto-signés sont considérés comme dangereux pour les sites web et les applications accessibles au public.

Lors de la création du certificat avec PowerShell, vous pouvez spécifier des paramètres tels que des algorithmes de chiffrement et de hachage, une période de validité de certificat et un nom de domaine. Le certificat peut ensuite être exporté avec ou sans sa clé privée en fonction des besoins de votre application.

L’application qui initie la session d’authentification a besoin de la clé privée tandis que l’application qui confirme l’authentification a besoin de la clé publique. Par conséquent, si vous vous authentifiez auprès de Microsoft Entra ID à partir de votre application de bureau PowerShell, vous exportez uniquement la clé publique (fichier .cer) et la chargez sur le portail Azure. L’application PowerShell utilise la clé privée de votre magasin de certificats local pour lancer l’authentification et obtenir des jetons d’accès pour appeler des API Microsoft comme Microsoft Graph.

Votre application peut également être exécutée à partir d’un autre ordinateur, par exemple Azure Automation. Dans ce scénario, vous exportez la paire de clés publique et privée de votre magasin de certificats local et chargez la clé publique sur le portail Azure et la clé privée (un fichier .pfx) sur Azure Automation. Votre application exécutée dans Azure Automation utilisera la clé privée pour lancer l’authentification et obtenir des jetons d’accès pour appeler des API Microsoft comme Microsoft Graph.

Cet article utilise la cmdlet PowerShell New-SelfSignedCertificate pour créer le certificat auto-signé et la cmdlet Export-Certificate pour l’exporter vers un emplacement facilement accessible. Ces cmdlets sont intégrées aux versions modernes de Windows (Windows 8.1 et versions ultérieures et Windows Server 2012R2 et versions ultérieures). Le certificat auto-signé aura la configuration suivante :

  • Une longueur de clé de 2048 bits. Bien que des valeurs plus longues soient prises en charge, la taille de 2048 bits est vivement recommandée pour une meilleure combinaison de sécurité et de performances.
  • Utilise l’algorithme de chiffrement RSA. Actuellement, seul RSA est pris en charge par Microsoft Entra ID.
  • Le certificat est signé avec l’algorithme de hachage SHA256. Microsoft Entra ID prend également en charge les certificats signés avec les algorithmes de hachage SHA384 et SHA512.
  • Le certificat n’est valide que pendant un an.
  • Le certificat peut être utilisé pour l’authentification du client et du serveur.

Pour personnaliser la date de début et d’expiration et d’autres propriétés du certificat, reportez-vous à New-SelfSignedCertificate.

Créer et exporter votre certificat public

Utilisez le certificat que vous créez à l’aide de cette méthode pour vous authentifier à partir d’une application exécutée sur votre machine. Par exemple, s’authentifier à partir de PowerShell.

Dans une invite PowerShell, exécutez la commande suivante et laissez la session de console PowerShell ouverte. Remplacez {certificateName} par le nom que vous souhaitez donner à votre certificat.

$certname = "{certificateName}"    ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256

La variable $cert de la commande précédente stocke votre certificat dans la session active et vous permet de l’exporter.

La commande ci-dessous exporte le certificat au format .cer. Vous pouvez également l’exporter dans d’autres formats pris en charge dans le portail Azure, notamment .pem et .crt.


Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer"   ## Specify your preferred location

Votre certificat est maintenant prêt à être chargé sur le portail Azure. Une fois qu’il est chargé, récupérez l’empreinte du certificat afin de l’utiliser pour authentifier votre application.

(Facultatif) : Exporter votre certificat public avec sa clé privée

Si votre application s’exécute à partir d’un autre ordinateur ou cloud, comme Azure Automation, vous aurez également besoin d’une clé privée.

En suivant des commandes précédentes, créez un mot de passe pour la clé privée de votre certificat et enregistrez-la dans une variable. Remplacez {myPassword} par le mot de passe que vous souhaitez utiliser pour protéger la clé privée de votre certificat.


$mypwd = ConvertTo-SecureString -String "{myPassword}" -Force -AsPlainText  ## Replace {myPassword}

En utilisant le mot de passe que vous avez stocké dans la variable $mypwd, sécurisez et exportez votre clé privée en utilisant la commande :


Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd   ## Specify your preferred location

Votre certificat (fichier .cer) est maintenant prêt à être chargé dans le portail Azure. La clé privée (fichier .pfx) est chiffrée et ne peut pas être lue par d’autres parties. Une fois qu’il est chargé, récupérez l’empreinte du certificat, que vous pouvez utiliser pour authentifier votre application.

Tâche facultative : Supprimer le certificat du magasin de clés

Vous pouvez supprimer la paire de clés de votre magasin personnel en exécutant la commande suivante pour récupérer l’empreinte du certificat.


Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName

Ensuite, copiez l’empreinte qui s’affiche et utilisez-la pour supprimer le certificat et sa clé privée.


Remove-Item -Path Cert:\CurrentUser\My\{pasteTheCertificateThumbprintHere} -DeleteKey

Connaître la date d’expiration de votre certificat

Le certificat auto-signé que vous avez créé en suivant les étapes ci-dessus a une durée de vie limitée avant d’expirer. Dans la section Inscription d’applications du portail Azure, l’écran Certificats et secrets affiche la date d’expiration du certificat. Si vous utilisez Azure Automation, l’écran Certificats du compte Automation affiche la date d’expiration du certificat. Suivez les étapes précédentes pour créer un nouveau certificat auto-signé.

Étapes suivantes

Gérer des certificats pour l’authentification unique fédérée dans Microsoft Entra ID