Comment créer un certificat auto-signé avec IIS ?
Sommaire
I. Présentation
L'utilisation d'un serveur Web, que ce soit avec Apache, Nginx ou IIS, s'accompagne souvent de la création d'un certificat SSL, soit par l'intermédiaire de l'autorité de certification de l'entreprise, soit avec un certificat auto-signé que l'on va approuver ensuite sur nos postes clients.
Dans ce tutoriel, je vais vous expliquer comment créer un certificat auto-signé avec IIS et PowerShell. Et oui, nous n'utiliserons pas du tout l'interface graphique !
Procédure réalisée sur Windows Server 2016, très certainement compatible Windows Server 2012 R2 et Windows Server 2019.
II. Installation du rôle IIS
Si la fonctionnalité IIS n'est pas installée sur votre serveur, alors vous pouvez l'installer avec la commande PowerShell suivante :
Install-WindowsFeature -Name "Web-Server" -IncludeManagementTools
Les options par défaut seront intégrées à l'installation de IIS. Si l'installation est un succès, continuez ! 🙂
III. Générer le certificat auto-signé
Nous allons définir le domaine pour lequel nous allons générer le certificat dans la variable $Server. Ce certificat sera d'ailleurs valide 1 an, mais si cela ne vous convient pas, vous pouvez le générer pour 3 ans par exemple. Dans ce cas, utilisez les deux commandes ci-dessous ($DateToday et $DateIn3Y).
$Server = "serveurweb.it-connect.local" $DateToday = Get-Date $DateIn3Y = $DateToday.AddYears(3)
Exécutez la commande ci-dessous pour créer le certificat :
New-SelfSignedCertificate -DnsName $Server -CertStoreLocation "cert:\LocalMachine\My" -FriendlyName $Server -NotAfter $DateIn3Y
Le cmdlet New-SelfSignedCertificate contient le paramètre "NotAfter" que vous devez retirer si vous souhaitez un certificat seulement sur un an. Via le paramètre CertStoreLocation, on précise que le certificat doit être stocké dans le magasin personnel de l'ordinateur.
IV. Exporter et importer le certificat
Le certificat étant en votre possession : vous avez besoin de l'exporter et de l'importer sur une autre machine ? Je vous explique comment procéder. Nous allons voir comment l'importer dans le magasin de certificats et aussi approuver le serveur IIS qui génère le certificat en tant que racine de confiance.
Pour cela, nous allons commencer par récupérer l’empreinte du certificat (1ère commande) avant de l’exporter et de l’importer.
Le mot de passe pour l’export sera « MyCertByIIS» et les fichiers exportés à la racine de « C » dans le dossier "Export".
Saisissez les commandes ci-dessous sans modification :
$CertThumbprint = (Get-ChildItem -path cert:\LocalMachine\My | Where{ $_.Subject -match $Server }).Thumbprint $CertPwd = ConvertTo-SecureString -String "MyCertByIIS" -Force –AsPlainText
Phase d’export
Pour l'export au format Pfx qui inclus le certificat et sa clé privée, on s'appuie sur Export-PfxCertificate alors que pour le certificat .CER ce sera avec la commande Export-Certificate.
Export-PfxCertificate -Cert cert:\LocalMachine\My\$CertThumbprint -FilePath C:\Export\MyCert.pfx -Password $CertPwd Export-Certificate -Cert Cert:\LocalMachine\My\$CertThumbprint -FilePath C:\Export\MyCert.cer
Phase d’import
Pour l'importation au format Pfx dans les racines de confiance, il faut utiliser le chemin suivant : Cert:\LocalMachine\Root.
Import-Certificate -FilePath C:\Export\MyCert.cer -CertStoreLocation Cert:\LocalMachine\My\ Import-PfxCertificate -FilePath C:\Export\MyCert.pfx -Password $CertPwd -CertStoreLocation Cert:\LocalMachine\Root
Grâce aux différentes commandes ci-dessus, vous êtes en mesure de générer un certificat auto-signé avec PowerShell en quelques minutes !
Bonjour
A partir de l’autorité de certification de l’entreprise, peux on créer un certificat SSL pour un serveur web ?
Comment doit on faire ?
Par avance merci.
Je ne comprends pas bien ce que signifie importer/exporter ?
Avez vous des indications supplémentaires à ce sujet ?