Certificats / PKI
Créer une CSR, vérifier un PFX, convertir les formats, contrôler l'expiration dans le magasin.
Créer une CSR
Crée une demande de certificat et la clé, avec tous les noms supplémentaires (SAN) pour les hôtes de messagerie et Autodiscover.
Mail + Autodiscover
- Nom commun (CN)
-
mail.example.comModifier dans le générateur → - Noms supplémentaires (SAN)
-
mail.example.com, autodiscover.example.comModifier dans le générateur → - Fichier de clé
-
privkey.pemModifier dans le générateur →
PowerShell (Windows)
certreq Natif
@"
[NewRequest]
Subject = "CN=mail.example.com"
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
[Extensions]
2.5.29.17 = "{text}dns=mail.example.com&dns=autodiscover.example.com"
"@ | Set-Content req.inf
certreq -new req.inf mail.example.com.csr openssl Outil complémentaire
openssl req -new -newkey rsa:2048 -nodes -keyout privkey.pem -out mail.example.com.csr -subj "/CN=mail.example.com" -addext "subjectAltName=DNS:mail.example.com,DNS:autodiscover.example.com" Shell Unix (bash)
openssl Natif
openssl req -new -newkey rsa:2048 -nodes -keyout privkey.pem -out mail.example.com.csr -subj "/CN=mail.example.com" -addext "subjectAltName=DNS:mail.example.com,DNS:autodiscover.example.com" certtool Outil complémentaire
certtool --generate-privkey --outfile privkey.pem && certtool --generate-request --load-privkey privkey.pem --outfile mail.example.com.csr Les navigateurs et serveurs modernes n'évaluent que les entrées SAN ; le nom commun seul ne suffit plus depuis des années. certreq stocke la clé dans le magasin de certificats Windows, openssl dans un fichier.
Examiner une CSR
Affiche le contenu d'une demande de certificat avant son envoi à l'autorité de certification : noms, longueur de clé et signature.
- Nom commun (CN)
-
mail.example.comModifier dans le générateur →
PowerShell (Windows)
certutil Natif
certutil -dump mail.example.com.csr openssl Outil complémentaire
openssl req -in mail.example.com.csr -noout -text -verify Shell Unix (bash)
openssl Natif
openssl req -in mail.example.com.csr -noout -subject -reqopt no_sigdump -text | head -20 certtool Outil complémentaire
certtool --crq-info --infile mail.example.com.csr Examiner un fichier PFX
Affiche le sujet, l'émetteur, la validité et la chaîne d'un fichier PFX/P12, et indique si la clé privée est incluse.
- Fichier PFX
-
cert.pfxModifier dans le générateur →
PowerShell (Windows)
Get-PfxData Natif
$pw = Read-Host "PFX-Passwort" -AsSecureString
$d = Get-PfxData -FilePath "cert.pfx" -Password $pw
$d.EndEntityCertificates | Format-List Subject, Issuer, NotAfter, Thumbprint, HasPrivateKey
$d.OtherCertificates | ForEach-Object { $_.Subject } openssl Outil complémentaire
openssl pkcs12 -in cert.pfx -nokeys -info | openssl x509 -noout -subject -issuer -dates Shell Unix (bash)
openssl Natif
openssl pkcs12 -in cert.pfx -nokeys -legacy 2>/dev/null | openssl x509 -noout -subject -issuer -dates certtool Outil complémentaire
certtool --p12-info --infile cert.pfx Pour les anciens fichiers PFX, OpenSSL 3 nécessite l'option -legacy, sinon il refuse l'ancien algorithme RC2.
Convertir les formats
Convertit entre PFX/P12 et PEM (certificat et clé séparés) : l'étape la plus courante pour déplacer un certificat entre Windows et une appliance.
- Fichier PFX
-
cert.pfxModifier dans le générateur → - Fichier de certificat
-
cert.pemModifier dans le générateur → - Fichier de clé
-
privkey.pemModifier dans le générateur →
PowerShell (Windows)
certutil / Export-PfxCertificate Natif
# PFX -> Base64-PEM (nur Zertifikat, ohne Schlüssel)
certutil -encode cert.pem.der cert.pem
# Zertifikat aus dem Store als PFX exportieren:
# Get-ChildItem Cert:\LocalMachine\My\<Thumbprint> | Export-PfxCertificate -FilePath cert.pfx -Password (Read-Host -AsSecureString) openssl Outil complémentaire
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem Shell Unix (bash)
openssl Natif
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem
openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out neu.pfx certtool Outil complémentaire
certtool --load-certificate cert.pem --load-privkey privkey.pem --to-p12 --outfile neu.p12 Le fichier de clé produit n'est pas chiffré. Supprimez-le après l'importation et ne le laissez pas sur un partage réseau.
La clé et le certificat correspondent-ils ?
Vérifie si un fichier de clé appartient au certificat : une somme de contrôle identique signifie qu'ils vont ensemble.
- Fichier de certificat
-
cert.pemModifier dans le générateur → - Fichier de clé
-
privkey.pemModifier dans le générateur →
PowerShell (Windows)
X509Certificate2 Natif
$c = New-Object Security.Cryptography.X509Certificates.X509Certificate2 "cert.pem"
"HasPrivateKey: $($c.HasPrivateKey)"
$c.PublicKey.Key.ToXmlString($false).Substring(0, 60) openssl Outil complémentaire
openssl x509 -in cert.pem -noout -modulus | openssl md5
openssl rsa -in privkey.pem -noout -modulus | openssl md5 Shell Unix (bash)
openssl Natif
openssl x509 -in cert.pem -noout -modulus | openssl sha256
openssl rsa -in privkey.pem -noout -modulus | openssl sha256
# Gleiche Prüfsumme = Schlüssel und Zertifikat gehören zusammen. certtool Outil complémentaire
certtool --certificate-info --infile cert.pem | grep -A2 "Public Key ID" Cette confusion est la cause la plus fréquente de "le certificat ne peut pas être importé".
Examiner le magasin de certificats
Liste les certificats installés avec empreinte, sujet et date d'expiration.
- Empreinte (thumbprint)
-
A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0Modifier dans le générateur →
PowerShell (Windows)
Cert: PSDrive Natif
Get-ChildItem Cert:\LocalMachine\My | Sort-Object NotAfter |
Format-Table Thumbprint, Subject, NotAfter, HasPrivateKey -AutoSize
Get-Item Cert:\LocalMachine\My\A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0 | Format-List * certutil Natif
certutil -store My Shell Unix (bash)
ls / openssl Natif
ls -1 /etc/ssl/certs | head -20
awk -v cmd='openssl x509 -noout -subject -enddate' '/BEGIN/{close(cmd)};{print | cmd}' /etc/ssl/certs/ca-certificates.crt | head -20 trust Outil complémentaire
trust list --filter=ca-anchors | head -40 Sous Windows, l'empreinte est l'identifiant qu'Exchange et IIS utilisent pour lier un certificat.
Qu'est-ce qui expire bientôt ?
Trouve les certificats qui expirent dans les 60 prochains jours : le contrôle qui évite une panne le week-end.
PowerShell (Windows)
Cert: PSDrive Natif
Get-ChildItem Cert:\LocalMachine\My |
Where-Object { $_.NotAfter -lt (Get-Date).AddDays(60) } |
Sort-Object NotAfter |
Format-Table Subject, NotAfter, Thumbprint -AutoSize certutil Outil complémentaire
certutil -store My | findstr /C:"NotAfter" Shell Unix (bash)
openssl Natif
for c in /etc/ssl/certs/*.pem; do
openssl x509 -in "$c" -noout -checkend 5184000 >/dev/null 2>&1 || echo "laeuft bald ab: $c"
done certtool Outil complémentaire
certtool --certificate-info --infile /etc/ssl/certs/ssl-cert-snakeoil.pem | grep -E "Not After"