Délivrer un certificat manuellement
Sommaire
I. Présentation
Ce chapitre explique comment délivrer un certificat manuellement à partir d'une autorité AD CS, en abordant plusieurs méthodes (console MMC, fichier CSR, PowerShell, etc.).
Voici un cas pratique de demande de certificats pour un serveur. Imaginons que nous souhaitions déployer un service de Wiki en interne et que nous souhaitions que la connexion soit sécurisée (HTTPS). Il nous faut demander un certificat à l'autorité en charge, à savoir S-SUBCA2, dans notre infrastructure.
II. Procédure pour délivrer un certificat
A. Choix du modèle
Nous avons précédemment publié un modèle de type serveur web (voir chapitre sur la gestion des modèles). Ainsi, nous allons nous appuyer dessus.

B. Via la console MMC
Pour mémoire, la clé privée est générée sur la machine depuis laquelle la demande est faite. Il ne s'agit pas d'une obligation absolue, plus une recommandation de faire la requête depuis la machine où le certificat sera installé. Cela évitera de devoir exporter le certificat avec sa clé privée, une fois le certificat émis.
Première technique : utiliser une console MMC pour remplir un formulaire de demande et obtenir le certificat.
Lancez la commande certlm.msc pour ouvrir la gestion de certificats pour le compte ordinateur. Il convient donc d'ouvrir cette console sur le Web. Ce sera notre point de départ pour les deux prochaines méthodes évoquées (en ligne et CSR).

C. En ligne
Ici nous allons soumettre la demande directement à l'autorité et obtenir le certificat à la fin de l'assistant. Pour cela, opérez un clic droit sous "Personnel" > "Certificats", puis "Toutes les tâches" et enfin "Demander un nouveau certificat".

Passez le premier écran de l'assistant en cliquant sur "Suivant".

Seule la stratégie d'inscription par défaut est accessible, cliquez sur "Suivant". Pour mémoire, les services CEP et CES permettent à une machine hors domaine d'obtenir un certificat en utilisant le protocole HTTPS. Notre machine étant dans le domaine, la stratégie Active Directory est la plus adaptée.

Le ou les modèles pour lesquels la machine dispose de droits s'affiche. Nous sélectionnons le modèle qui nous intéresse, puis il nous faut cliquer sur "Propriétés" pour pouvoir remplir le formulaire de demande.

Au travers de cet écran, nous allons pouvoir ajouter toutes les informations utiles à notre certificat. Pour chaque saisie, il convient de sélectionner le type de champ (1), puis de saisir sa valeur (2) et enfin de cliquer sur le bouton Ajouter (3) au milieu.
La première info à inscrire étant le nom d'objet, référencé sous l'intitulé "Nom commun".

Si d'autres noms d'objets doivent apparaître, il convient de les ajouter à la rubrique "Autre nom" avec un type DNS. Pour un certificat de type SAN, la bonne pratique est toujours de rappeler le nom d'objet principal.

A minima, il vous faudra ajouter le pays, l'organisation et l'unité d'organisation pour être conforme aux exigences des navigateurs. Vous pouvez aussi ajouter d'autres informations facultatives comme le département (état) et la ville.

Il est toujours intéressant d'indiquer un nom convivial sur le certificat, cela permettra de dissocier le nouveau certificat des autres pourquoi pas déjà présents sur la machine.

Les autres onglets ne font que reprendre les propriétés du modèle, aussi je ne m'attarderai pas dessus. Notez toutefois, depuis l'onglet Autorité de certification, l'autorité désignée pour émettre le certificat. Si toutefois plusieurs serveurs d'autorités publient le même modèle, en laissant cocher la case devant chaque nom d'autorité, un serveur sera choisi aléatoirement pour traiter la demande.

Après avoir validé par OK cet écran, il nous reste plus qu'à cliquer sur Inscription pour envoyer la demande en ligne.

L'autorité de certification valide la requête et délivre le certificat.

Cliquez sur "Terminer" pour consulter le certificat installé. Notez la présence d'une icône en forme de clé qui indique que la clé privée du certificat est disponible localement.

D. Via un fichier de requête (CSR)
Toujours via MMC, cette variante implique que l'autorité n'est pas directement joignable depuis le serveur où le certificat doit être installé. Il convient alors de générer un fichier de requête, aussi appelé CSR.
Depuis la console MMC, faites un clic droit "Toutes les tâches" > "Opérations avancées" > "Créer une demande personnalisée".

Les écrans sont assez similaires à la version de demande "En ligne". Voici ceux qui changent.
Tout d'abord, il nous est demandé de sélectionner le modèle ainsi que le format de la demande (peu importe, l'autorité sait traiter les deux formats). Je reprends ici le modèle créé précédemment.

À l'étape suivante, le remplissage est tout à fait identique et à l'issue, un chemin vous sera demandé pour y stocker le fichier de demande.

Ensuite, il nous faut copier ce fichier sur une machine qui peut accéder à la console de gestion de l'autorité. Lancez la console de gestion de l'autorité et réalisez un clic droit sur le nom de l'autorité > "Toutes les tâches" > "Soumettre une nouvelle demande".

Sélectionnez le fichier CSR.

L'autorité génère le certificat et demande un dossier où enregistrer le fichier.

Il ne reste plus qu'à importer le fichier de certificat sur le serveur cible. Ouvrez la console de gestion des certificats via certlm.msc et accédez au menu d'import.

Sélectionnez le fichier de certificat.

L'import se termine avec succès ! Le certificat est bien rattaché à la clé privée stockée en local.

E. Via PowerShell et cmd
Si la demande doit se faire en ligne de commandes, certreq.exe peut être utilisé. Il faut passer par plusieurs étapes.
Tout d'abord, un fichier de stratégie au format .inf doit être créé. Il contient les informations à inclure dans le certificat, ainsi que le modèle à utiliser. Ici, le fichier "C:\certificats\certreq.inf" est créé.
Voici son contenu :
[NewRequest]
Subject = CN=wiki.contoso.ad, o=Contoso, ou=IT, c=FR
Exportable = TRUE
KeyLength = 2048
KeySpec = 1
KeyUsage = 0xf0
MachineKeySet = TRUE
[RequestAttributes]
CertificateTemplate=Contoso-Ordinateur-2048-v1
À partir de ce fichier, nous allons générer le fichier de requête (CSR).
certreq -new C:\certificats\certreq.inf C:\certificats\cert.csr
Ensuite, il nous est possible d'envoyer la requête à l'autorité.
certreq -submit -config "S-SUBCA2.contoso.ad\ContosoSubCA2" C:\certificats\certreq.inf C:\certificats\cert.cer
La réponse nous permet d'obtenir le fichier de certificat, nous pouvons alors l'importer en local pour y rattacher la clé privée :
certreq -accept C:\certificats\cert.cer
Si vous avez besoin ensuite d'exporter le certificat avec sa clé privée, ce sera possible en utilisant cette fois, une commande PowerShell :
Get-Childitem "cert:\LocalMachine\My" | where-object {$_.Thumbprint -eq (New-Object System.Security.Cryptography.X509Certificates.X509Certificate2((Get-Item C:\certificats\cert.cer ).FullName, "")).Thumbprint} |Export-PfxCertificate -FilePath C:\certificats\cert.pfx -Password Motdepasse
La requête d'un certificat en PowerShell passe par le module PSPKI dont nous avons parlé précédemment, ou vous pouvez utiliser le script disponible sur cette page : github.com/J0F3/PowerShell
III. Conclusion
Et voilà ! À chacun sa méthode pour obtenir un certificat, selon si vous êtes plus sensible à l'interface graphique ou plus habitué aux lignes de commandes. Toutefois, pour des besoins à plus grande échelle, il est nécessaire de faire une demande automatiquement. Tous les détails dans le chapitre suivant !
