Este artículo presenta un resumen de las tareas de administración más habituales/frecuentes al trabajar con certificados y OpenSSL.

Crear una solicitud de firma de certificado X.509

Es decir, crear el archivo .csr (Certificate Signing Request), el cual incluye el certificado y clave pública que se desea firmar.

openssl req -config openssl.my.cnf -new -nodes -keyout private/linuxito.key -out linuxito.csr -days 547

openssl.my.cnf es el archivo de configuración de OpenSSL y linuxito.key indica el nombre de archivo correspondiente con la clave privada que se va a generar.

Desencriptar la clave privada (eliminar/remover passphrase)
openssl rsa -in private/linuxito.key.org -out private/linuxito.key

linuxito.key.org es la clave privada protegida con contraseña (passphrase), linuxito.key es la clave plana. Esto es necesario cuando el certificado es utilizado por un servicio (por ejemplo Apache). Si se utiliza una clave privada encriptada es necesario ingresar la contraseña cada vez que inicia el servicio.

Firmar un certificado

Utilizando nuestra autoridad certificante (CA), firmar la solicitud y expedir el certificado ejecutando:

openssl ca -config openssl.my.cnf -out certs/linuxito.crt -infiles linuxito.csr

linuxito.crt es el certificado generado.

Verificar un certificado X.509

Verificar la cadena de certificación de un certificado (no su validez). Se utiliza generalmente para comprobar que no falte ningún certificado intermedio en la cadena.

openssl verify -purpose sslserver -CAfile certs/ca.crt certs/linuxito.crt 

ca.crt es el certificado de nuestra CA.

Obtener información de un certificado X.509
openssl x509 -subject -issuer -enddate -noout -in certs/linuxito.crt

Las opciones -subject, -issuer y -enddate se utilizan para mostrar los datos del certificado, la autoridad certificante que lo firma, y su validez (fecha de expiración). La opción -noout indica que no se vuelque la versión codificada del certificado.

Comprobar la validez de un certificado X.509

Si sólo se desea determinar si un certificado X.509 es aún válido, simplemente ejecutar:

openssl x509 -enddate -noout -in certs/linuxito.crt
Exportar un certificado X.509 en formato PKCS#12

Algunos servicios, notablemente en sistemas operativos de la familia Windows, requieren que el certificado, junto con su clave privada, estén almacenados en un archivo de formato PKCS#12. Para convertir un certificado X.509 junto con su clave privada en un archivo PKCS#12, simplemente ejecutar:

openssl pkcs12 -export -out certs/linuxito.p12 -in certs/linuxito.crt -inkey private/linuxito.key

linuxito.p12 es el archivo PKCS#12 de salida. Durante la conversión es necesario especificar una contraseña de exportación.

Obtener información de un certificado PKCS#12
openssl pkcs12 -info -in private/linuxito.p12 

Requiere ingresar la contraseña de exportación.

Actualizar la base de datos de la CA

Si se requiere actualizar la base de datos de la autoridad certificante para detectar certificados expirados, ejecutar:

openssl ca -config openssl.my.cnf -updatedb
Permitir sujetos duplicados

La configuración por defecto de la CA no permite sujetos (subject) replicados (mismo Common Name). Para modificar este comportamiento se debe modificar el valor de la variable unique_subject en la configuración del índice (archivo index.txt.attr):

unique_subject = no
Más información

Para más información acerca de OpenSSL y todos sus componentes, consultar la ayuda y sus páginas de manual:

openssl req --help
openssl rsa --help
openssl ca --help
openssl x509 --help
openssl pkcs12 --help
man openssl
man req
man rsa
man ca
man x509
man pkcs12
man verify


Tal vez pueda interesarte


Compartí este artículo