Certificados
- Certificados PEM
- Comprobar SSL servidor
- Comprobaciones varias de certificados
- Convertir certificados con openssl
- Formatos de los certificados
Certificados PEM
Cómo crear un archivo .pem para instalaciones de certificados SSL
¿Que es un certificado pem?
Los archivos Privacy Enhanced Mail (PEM) son contenedores de certificados concatenados que se usan con frecuencia en instalaciones de certificados cuando se importan múltiples certificados que forman una cadena completa como un solo archivo. Son un estándar definido en los RFC 1421 a 1424
Se los puede considerar como un contenedor en capas de certificados encadenados. Un archivo .pem es un formato contenedor que puede incluir el certificado público o toda la cadena de certificados (clave privada, clave pública, certificados raíz):
Llave privada (.key)
Certificado de servidor (crt, clave pública)
(opcional) CA intermedia y / o paquetes si están firmados por un tercero
¿Cómo crear un archivo PEM autofirmado?
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
¿Cómo crear un archivo PEM a partir de archivos de certificados existentes que forman una cadena?
(opcional) Elimina la contraseña de la clave privada siguiendo los pasos que se detallan a continuación:
openssl rsa -in server.key -out nopassword.key
Nota: Tienes que introducir la contraseña de la clave privada.Combine la clave privada, el certificado público y cualquier archivo de certificado intermedio de terceros:
cat nopassword.key > server.pem<br />cat server.crt >> server.pem
Nota: Repite este paso según sea necesario para archivos de cadena de certificados de terceros, paquetes, etc.
cat intermediate.crt >> server.pem
También se puede realizar desde un editor:
Abre un editor de texto (como wordpad) y pega todo el cuerpo de cada certificado en un archivo de texto en el siguiente orden:
La clave privada: your_domain_name.key
El Certificado Primario - your_domain_name.crt
El Certificado Intermedio - DigiCertCA.crt
El certificado raíz - TrustedRoot.crt
----BEGIN RSA PRIVATE KEY-----
(Your Private Key: your_domain_name.key)
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
(Your Primary SSL certificate: your_domain_name.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Intermediate certificate: DigiCertCA.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Root certificate: TrustedRoot.crt)
-----END CERTIFICATE-----
Crear un PFX a partir del certificado PEM
Parámetro | Descripción |
---|---|
openssl | The command for executing OpenSSL. |
pkcs12 | The file utility for PKCS#12 files in OpenSSL. |
-export -out certificate.pfx | Exports and saves the PFX file as certificate.pfx. |
-inkey privateKey.key | Uses the private key file privateKey.key as the private key to combine with the certificate. |
-in certificate.crt | Uses certificate.crt as the certificate to combine with the private key. |
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt
Otro método
- Take the file you exported (e.g. certname.pfx) and copy it to a system where you have OpenSSL installed. Note: the *.pfx file is in PKCS#12 format and includes both the certificate and the private key.
- Run the following command to export the private key:
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
- Run the following command to export the certificate:
openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
- Run the following command to remove the passphrase from the private key:
openssl rsa -in key.pem -out server.key
Comprobar SSL servidor
Servidores de correo
Para comprobar si un servidor de correo responde podemos usar comandos como nc o telnet (obsoleto). Pero en el caso de que el servidor use los puertos 993 (IMAP SSL) o 995 (POP3 SSL) la comprobación ha de hacerse de la siguiente forma:
Protocolos IMAP y POP3
openssl s_client -showcerts -connect mail.midominio.com:993 -servername mail.midominio.com
Para el protocolo de salida (SMTP)
openssl s_client -showcerts -connect mail.midominio.com:587 -starttls smtp -tls_2
Otros servicios de servidores
Para probar el protocolo sftp
openssl s_client -showcerts -connect ftp.miservidorftp.com:21 -starttls ftp -tls1_2
Comprobaciones varias de certificados
Comprobar las fechas de un certificado
openssl x509 -in certificadocrt -noout -dates
openssl x509 -in certificado.pem -noout -dates
Comprobar la fecha de expiración
openssl x509 -enddate -noout -in certificado.crt
openssl x509 -enddate -noout -in certificado.pem
Comprobar todos los datos del certificado
openssl x509 -text -noout -in certificado.crt
Leer la información del certificado SSL de un servidor remoto
openssl s_client -showcerts -connect www.midominio.com:443
Eliminar la contraseña de una clave privada
openssl rsa -in privateKey.pem -out newPrivateKey.pem
Verificar una clave privada
openssl rsa -in privateKey.key -check
Verificar un archivo PKCS # 12 (.pfx o .p12)
openssl pkcs12 -info -in certificado.p12
Verificación de la validez de un certificado SSL
openssl verify -CAfile certificate-chain.crt certificate.crt
openssl x509 -in certificate.crt -noout -pubkey
openssl rsa -in certificate.key -pubout
Verificar que la clave privada y la clave pública son un par de claves que coinciden:
openssl rsa -noout -modulus -in certificate.key | openssl md5
openssl x509 -noout -modulus -in certificate.crt | openssl md5
Verificar las fechas de validez del cetificado
openssl x509 -noout -in certificate.crt -dates
Verificar el orden de sus certificados.
openssl crl2pkcs7 -nocrl -certfile $ MAIN_CERT_FILE.PEM | openssl pkcs7 -print_certs -noout
Otras comprobaciones
openssl rsa -inform PEM -in /tmp/certificate.key
openssl x509 -informar PEM -en /tmp/certificate.crt
Convertir certificados con openssl
En este artículo explicamos la forma de convertir entre tipos de certificados
.PEM a .DER
openssl x509 -outform der -in certificado.pem -out certificado.der
PKCS#12 a DER
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
PEM y Clave privada a PKCS#12 (.pfx .p12)
openssl pkcs12 -export -out certificado.pfx -inkey privateKey.key -in certificado.crt -certfile CACert.crt
.PEM a .P7B
openssl crl2pkcs7 -nocrl -certfile certificado.cer -out certificado.p7b -certfile CACert.cer
.DER a.PEM
openssl x509 -inform der -in certificado.cer -out certificado.pem
.P7B a .PEM
openssl pkcs7 -print_certs -in certificado.p7b -out certificado.cer
.P7B a .PFX
openssl pkcs7 -print_certs -in certificat.p7b -out certificado.cer
openssl pkcs12 -export -in certificado.cer -inkey privateKey.key -out certificado.pfx -certfile CACert.cer
.PFX a .PEM
openssl pkcs12 -in certificado.pfx -out certificado.cer -nodes
x509 a .PEM
openssl x509 -in certificado.cer -outform PEM -out certificado.pem
PKCS7 a .PEM
openssl pkcs7 -print_certs -in certificado.p7b -out certificado.pem
.PFX a PKC#8
openssl pkcs12 -in certificado.pfx -out certificado.cer -nodes
openSSL pkcs8 -in certificado.pem -topk8 -nocrypt -out certificado.pk8