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