Sertifikater / PKI
Opprett en CSR, kontroller en PFX, konverter formater, sjekk utløp i sertifikatlageret.
Opprett en CSR
Oppretter en sertifikatforespørsel og nøkkel, med alle ekstra navn (SAN) for e-post- og Autodiscover-verter.
Mail + Autodiscover
- Common name (CN)
-
mail.example.comEndre i generatoren → - Ekstra navn (SAN)
-
mail.example.com, autodiscover.example.comEndre i generatoren → - Nøkkelfil
-
privkey.pemEndre i generatoren →
PowerShell (Windows)
certreq Innebygd
@"
[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 Tilleggsverktøy
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" Unix-skall (bash)
openssl Innebygd
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 Tilleggsverktøy
certtool --generate-privkey --outfile privkey.pem && certtool --generate-request --load-privkey privkey.pem --outfile mail.example.com.csr Moderne nettlesere og servere vurderer bare SAN-oppføringene; common name alene har ikke vært nok på mange år. certreq lagrer nøkkelen i Windows sertifikatlager, openssl i en fil.
Undersøk en CSR
Viser innholdet i en sertifikatforespørsel før den sendes til CA-en: navn, nøkkellengde og signatur.
- Common name (CN)
-
mail.example.comEndre i generatoren →
PowerShell (Windows)
certutil Innebygd
certutil -dump mail.example.com.csr openssl Tilleggsverktøy
openssl req -in mail.example.com.csr -noout -text -verify Unix-skall (bash)
openssl Innebygd
openssl req -in mail.example.com.csr -noout -subject -reqopt no_sigdump -text | head -20 certtool Tilleggsverktøy
certtool --crq-info --infile mail.example.com.csr Undersøk en PFX-fil
Viser subjekt, utsteder, gyldighet og kjede for en PFX/P12-fil og om den private nøkkelen er med.
- PFX-fil
-
cert.pfxEndre i generatoren →
PowerShell (Windows)
Get-PfxData Innebygd
$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 Tilleggsverktøy
openssl pkcs12 -in cert.pfx -nokeys -info | openssl x509 -noout -subject -issuer -dates Unix-skall (bash)
openssl Innebygd
openssl pkcs12 -in cert.pfx -nokeys -legacy 2>/dev/null | openssl x509 -noout -subject -issuer -dates certtool Tilleggsverktøy
certtool --p12-info --infile cert.pfx For eldre PFX-filer trenger OpenSSL 3 bryteren -legacy, ellers avviser den den gamle RC2-algoritmen.
Konverter formater
Konverterer mellom PFX/P12 og PEM (sertifikat og nøkkel hver for seg): det vanligste trinnet når et sertifikat flyttes mellom Windows og en appliance.
- PFX-fil
-
cert.pfxEndre i generatoren → - Sertifikatfil
-
cert.pemEndre i generatoren → - Nøkkelfil
-
privkey.pemEndre i generatoren →
PowerShell (Windows)
certutil / Export-PfxCertificate Innebygd
# 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 Tilleggsverktøy
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem Unix-skall (bash)
openssl Innebygd
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 Tilleggsverktøy
certtool --load-certificate cert.pem --load-privkey privkey.pem --to-p12 --outfile neu.p12 Nøkkelfilen som lages, er ukryptert. Slett den etter importen, og la den ikke ligge på en nettverksressurs.
Passer nøkkel og sertifikat sammen?
Kontrollerer om en nøkkelfil hører til sertifikatet: identisk kontrollsum betyr at de hører sammen.
- Sertifikatfil
-
cert.pemEndre i generatoren → - Nøkkelfil
-
privkey.pemEndre i generatoren →
PowerShell (Windows)
X509Certificate2 Innebygd
$c = New-Object Security.Cryptography.X509Certificates.X509Certificate2 "cert.pem"
"HasPrivateKey: $($c.HasPrivateKey)"
$c.PublicKey.Key.ToXmlString($false).Substring(0, 60) openssl Tilleggsverktøy
openssl x509 -in cert.pem -noout -modulus | openssl md5
openssl rsa -in privkey.pem -noout -modulus | openssl md5 Unix-skall (bash)
openssl Innebygd
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 Tilleggsverktøy
certtool --certificate-info --infile cert.pem | grep -A2 "Public Key ID" Denne forvekslingen er den vanligste årsaken til "sertifikatet kan ikke importeres".
Undersøk sertifikatlageret
Lister installerte sertifikater med avtrykk, subjekt og utløpsdato.
- Avtrykk (thumbprint)
-
A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0Endre i generatoren →
PowerShell (Windows)
Cert: PSDrive Innebygd
Get-ChildItem Cert:\LocalMachine\My | Sort-Object NotAfter |
Format-Table Thumbprint, Subject, NotAfter, HasPrivateKey -AutoSize
Get-Item Cert:\LocalMachine\My\A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0 | Format-List * certutil Innebygd
certutil -store My Unix-skall (bash)
ls / openssl Innebygd
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 Tilleggsverktøy
trust list --filter=ca-anchors | head -40 I Windows er avtrykket identifikatoren Exchange og IIS bruker til å binde et sertifikat.
Hva utløper snart?
Finner sertifikater som utløper innen de neste 60 dagene: kontrollen som hindrer et driftsavbrudd i helgen.
PowerShell (Windows)
Cert: PSDrive Innebygd
Get-ChildItem Cert:\LocalMachine\My |
Where-Object { $_.NotAfter -lt (Get-Date).AddDays(60) } |
Sort-Object NotAfter |
Format-Table Subject, NotAfter, Thumbprint -AutoSize certutil Tilleggsverktøy
certutil -store My | findstr /C:"NotAfter" Unix-skall (bash)
openssl Innebygd
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 Tilleggsverktøy
certtool --certificate-info --infile /etc/ssl/certs/ssl-cert-snakeoil.pem | grep -E "Not After"