Aller au contenu
  1. Blogs/

Créer un certificat avec AC autonome

·3 mins·
PKI WindowsServer OpenSSL
Mathias D.
Auteur
Mathias D.
Passionné d’informatique, je dérive entre serveurs et réseaux tel une méduse. Sur ce blog, je partage mes astuces et réflexions pour vous aider à maîtriser l’art de l’administration système sans vous faire piquer par les complexités techniques !
Sommaire

Création d’un certificat dans une autorité de certification autonome Windows server
#

📌 Contexte
#

  • Objectif : Créer un certificat et l’approuver via une autorité de certification autonome Windows server (sans AD) avec un script Powershell pour effectuer la demande et l’export des clés publiques et privés afin de les ajouter à un reverse proxy Nginx.
  • Environnement : Lab
  • Système d’exploitation : Windows server 2025

⚙️ Procédure
#

1. Script Powershell pour la demande :
#

function Get-CertificateInfo {
    $certInfo = @{}

    $certInfo.CommonName = Read-Host "Entrez le nom commun (ex: www.monsite.local)"
    $certInfo.DNSName = Read-Host "Entrez le nom DNS (ex: monsite.local)"
    $certInfo.FriendlyName = Read-Host "Entrez le nom convivial du certificat"
    $certInfo.OutputFolder = "C:\Temp\CertRequest"

    return $certInfo
}

function New-CertificateRequest {
    param (
        [Parameter(Mandatory=$true)]
        $CertInfo
    )

    # Créer le dossier de sortie si nécessaire
    if (-not (Test-Path $CertInfo.OutputFolder)) {
        New-Item -Path $CertInfo.OutputFolder -ItemType Directory | Out-Null
    }

    $infPath = "$($CertInfo.OutputFolder)\CertRequest.inf"
    $reqPath = "$($CertInfo.OutputFolder)\CertRequest.req"

    # Contenu du fichier INF
    $infContent = @"
[Version]
Signature="\$Windows NT$"

[NewRequest]
Subject = "CN=$($CertInfo.CommonName)"
Exportable = TRUE
KeyLength = 2048
KeyAlgorithm = RSA
MachineKeySet = TRUE
FriendlyName = "$($CertInfo.FriendlyName)"

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=$($CertInfo.DNSName)"

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
"@

    # Écriture du fichier INF
    $infContent | Out-File -FilePath $infPath -Force

    # Génération de la requête
    certreq -new $infPath $reqPath

    Write-Host "`n✅ Requête générée avec succès : $reqPath"
    Write-Host "➡️ Soumettez ce fichier manuellement à votre autorité de certification autonome."
    Write-Host "➡️ Une fois le certificat émis, placez le fichier .cer dans le même dossier et exécutez :"
    Write-Host "certreq -accept $($CertInfo.OutputFolder)\CertRequest.cer"
}

# Exécution
$certInfo = Get-CertificateInfo
New-CertificateRequest -CertInfo $certInfo

Ce script est à exécuter sur le serveur de l’autorité de certification Exécutez le script dans un répertoire :

Le script n’est pas signé donc Powershell vous demande une autorisation. Ensuite renseignez les informations demandée (vous pouvez mettre trois fois la même chose.) La demande est crée dans le dossier : C:\Temp\CertRequest (vous pouvez changer ce paramètre à la ligne 7 du script : $certInfo.OutputFolder = "C:\Temp\CertRequest")

2. Approuvez la demande crée via la console MMC :
#

Pour approuver la demande de certificat et ainsi le délivrer via la console mmc : Faites :

Toutes les tâches
|-> Soumettre une nouvelle demande...

Et venez sélectionner votre fichier de demande : CertRequest.req Allez dans les demandes en attente et faite un clic droit :

Toutes les tâches
|-> Délivrer

Allez dans les Certificats délivrés, ouvrez le, allez dans les détails et faites “Copier dans un fichier” la boite de dialogue de l’assistant de certificat devrait s’ouvrir. Ensuite exportez le certificat dans un dossier : Ensuite effectuez la commande suivante pour ajouter le certificat dans le magasin du serveur :

certreq -accept C:\chemin\vers\le\certificat.cer

3. Export de la clé privée et conversion au format pem :
#

Une fois le certificat accepté dans le magasin du serveur vous pouvez aller dans les certificats de l’ordinateur sur le serveur (l’utilisation de la console via RSAT avec WinRM ne permet pas l’option d’exporter la clé privé d’un certificat). Allez dans :

Personnel
|-> Certificats

Sur le certificat voulu faites un clic droit :

Toutes les tâches
|-> Exporter

L’assistant d’exportation de certificat devrais s’afficher comme lors de l’export du certificat.

Ensuite la commande ssl pour convertir le certificat au format pem est la suivante :

openssl x509 -in monsupercertificat.cer -outform PEM -out monsupercertificat.pem

tandis que pour la clé privée :

openssl pkcs12 -in masuperclé.pfx -out masuperclé.pem -nodes

Une fois cela fait vous pouvez ensuite utiliser ce certificat / clé privée pour sécuriser un server web ou une application interne à votre réseau.

Articles connexes

Test
·1 min
Test