Certificados / PKI
Crear una CSR, revisar un PFX, convertir formatos, comprobar caducidades en el almacén de certificados.
Crear una CSR
Crea una solicitud de certificado y la clave, con todos los nombres adicionales (SAN) para los hosts de correo y Autodiscover.
Mail + Autodiscover
- Nombre común (CN)
-
mail.example.comCambiar en el generador → - Nombres adicionales (SAN)
-
mail.example.com, autodiscover.example.comCambiar en el generador → - Archivo de clave
-
privkey.pemCambiar en el generador →
PowerShell (Windows)
certreq Integrado
@"
[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 Herramienta adicional
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 de Unix (bash)
openssl Integrado
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 Herramienta adicional
certtool --generate-privkey --outfile privkey.pem && certtool --generate-request --load-privkey privkey.pem --outfile mail.example.com.csr Los navegadores y servidores modernos solo evalúan las entradas SAN; el nombre común por sí solo no basta desde hace años. certreq guarda la clave en el almacén de certificados de Windows, openssl en un archivo.
Examinar una CSR
Muestra el contenido de una solicitud de certificado antes de enviarla a la CA: nombres, longitud de clave y firma.
- Nombre común (CN)
-
mail.example.comCambiar en el generador →
PowerShell (Windows)
certutil Integrado
certutil -dump mail.example.com.csr openssl Herramienta adicional
openssl req -in mail.example.com.csr -noout -text -verify Shell de Unix (bash)
openssl Integrado
openssl req -in mail.example.com.csr -noout -subject -reqopt no_sigdump -text | head -20 certtool Herramienta adicional
certtool --crq-info --infile mail.example.com.csr Examinar un archivo PFX
Muestra el sujeto, el emisor, la validez y la cadena de un archivo PFX/P12 y si incluye la clave privada.
- Archivo PFX
-
cert.pfxCambiar en el generador →
PowerShell (Windows)
Get-PfxData Integrado
$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 Herramienta adicional
openssl pkcs12 -in cert.pfx -nokeys -info | openssl x509 -noout -subject -issuer -dates Shell de Unix (bash)
openssl Integrado
openssl pkcs12 -in cert.pfx -nokeys -legacy 2>/dev/null | openssl x509 -noout -subject -issuer -dates certtool Herramienta adicional
certtool --p12-info --infile cert.pfx Para archivos PFX antiguos, OpenSSL 3 necesita la opción -legacy; de lo contrario rechaza el antiguo algoritmo RC2.
Convertir formatos
Convierte entre PFX/P12 y PEM (certificado y clave por separado): el paso más habitual al mover un certificado entre Windows y un appliance.
- Archivo PFX
-
cert.pfxCambiar en el generador → - Archivo de certificado
-
cert.pemCambiar en el generador → - Archivo de clave
-
privkey.pemCambiar en el generador →
PowerShell (Windows)
certutil / Export-PfxCertificate Integrado
# 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 Herramienta adicional
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem Shell de Unix (bash)
openssl Integrado
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 Herramienta adicional
certtool --load-certificate cert.pem --load-privkey privkey.pem --to-p12 --outfile neu.p12 El archivo de clave generado no está cifrado. Elimínelo tras la importación y no lo deje en un recurso compartido de red.
¿Coinciden la clave y el certificado?
Comprueba si un archivo de clave pertenece al certificado: una suma de comprobación idéntica significa que van juntos.
- Archivo de certificado
-
cert.pemCambiar en el generador → - Archivo de clave
-
privkey.pemCambiar en el generador →
PowerShell (Windows)
X509Certificate2 Integrado
$c = New-Object Security.Cryptography.X509Certificates.X509Certificate2 "cert.pem"
"HasPrivateKey: $($c.HasPrivateKey)"
$c.PublicKey.Key.ToXmlString($false).Substring(0, 60) openssl Herramienta adicional
openssl x509 -in cert.pem -noout -modulus | openssl md5
openssl rsa -in privkey.pem -noout -modulus | openssl md5 Shell de Unix (bash)
openssl Integrado
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 Herramienta adicional
certtool --certificate-info --infile cert.pem | grep -A2 "Public Key ID" Esta confusión es la causa más frecuente de "el certificado no se puede importar".
Examinar el almacén de certificados
Lista los certificados instalados con huella digital, sujeto y caducidad.
- Huella digital (thumbprint)
-
A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0Cambiar en el generador →
PowerShell (Windows)
Cert: PSDrive Integrado
Get-ChildItem Cert:\LocalMachine\My | Sort-Object NotAfter |
Format-Table Thumbprint, Subject, NotAfter, HasPrivateKey -AutoSize
Get-Item Cert:\LocalMachine\My\A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0 | Format-List * certutil Integrado
certutil -store My Shell de Unix (bash)
ls / openssl Integrado
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 Herramienta adicional
trust list --filter=ca-anchors | head -40 En Windows, la huella digital es el identificador con el que Exchange e IIS vinculan un certificado.
¿Qué caduca pronto?
Encuentra los certificados que caducan en los próximos 60 días: la comprobación que evita una caída en fin de semana.
PowerShell (Windows)
Cert: PSDrive Integrado
Get-ChildItem Cert:\LocalMachine\My |
Where-Object { $_.NotAfter -lt (Get-Date).AddDays(60) } |
Sort-Object NotAfter |
Format-Table Subject, NotAfter, Thumbprint -AutoSize certutil Herramienta adicional
certutil -store My | findstr /C:"NotAfter" Shell de Unix (bash)
openssl Integrado
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 Herramienta adicional
certtool --certificate-info --infile /etc/ssl/certs/ssl-cert-snakeoil.pem | grep -E "Not After"