Administración de la CA
C@mpus - @cademia Linux

Introducción 

Los siguientes procedimientos cubrirán los aspectos básicos en la administración de certificados:

  • Generación de Peticiones de Certificados
  • Firmados de Certificados
  • Revocación de Certificados
  • Renovación de Certificados
  • Visualización de Certificados
  • Exportación para utilización con Windows

Generación de Peticiones de Certificados

Para la generación de una petición de certificado, independientemente su uso, el siguiente comando aplicará:

openssl req -config /etc/openssl.cnf -new -keyout newreq.pem -out newreq.pem

Algunos servicios, como OpenLDAP o los equipos finales ejecutando Windows,  necesitan certificados sin cifrar, para esto la siguiente instrucción aplica:

openssl req -config /etc/openssl.cnf -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem

En el caso de los certificados para servidoes, todos los campos deben mantenerse en blanco (aplicando el punto según lo indica openssl) a excepción del Common Name (CN) que debe llevar el nombre al cual se refiera el servidor.

El archivo de requerimiento contiene la llave privada.  No elimine este archivo.  Este debe ser contenido únicamente por el dueño del certificado.


Firmado de Certificados

Para firmar un certificado y hacerlo válido, la siguiente línea de comando aplica en caso genérico:

openssl ca -config /etc/openssl.cnf -policy policy_anything -days 365 -out newcert.pem -infiles newreq.pem

Al terminar la firma se habrán hecho los siguientes cambios:

  • El archivo newcert.pem contendrá el último certificado válido
  • El archivo serial será actualizado, aumentando en uno el valor de su contenido
  • El archivo index.txt contendrá la nueva entrada del estatus del certificado realizado
  • Dentro del directorio newcerts, existirá un archivo mas con un número equivalente al serial indicado, por ejemplo: 04.pem.  Este archivo es el certificado del usuario.

Si se planea utilizar los certificados para la autenticación de radius con EAP se pueden añadir las siguientes banderas a la línea de comando:

  • -extensions xpserver_ext si se utiliza el certificado para un servidor radius
  • -extensions xpclient_ext si se utiliza para clientes radius.

Outlook ignorará cualquier certificado firmado con extensiones adicionales.


Revocación de Certificados

La revocación de certificados puede ser necesaria cuando se necesite invalidar alguno antes de su fecha de expiración.  Esta acción se puede realizar sin la parte privada de la llave.

Para realizar esto, el siguiente comando debe ser ejecutado:

openssl ca -config /etc/openssl.cnf -revoke newcerts/01.pem

El certificado ya se encuentra revocado, sin embargo, la nueva lista se tiene que generar y ser publicada.  La generación de la lista de revocación CRL se ejecuta con el siguiente comando:

openssl ca -gencrl -config /etc/openssl.cnf -crldays 7 -crlexts crl_ext -out crl/ca.crl

El archivo ca.crl debe ser publicado en Internet en la ubicación especificada dentro del mismo certificado. Se recomienda la creación de un crontab que publique automáticamente la lista puesto que esta tiene una caducidad de 7 días.


Renovación de Certificados

Una vez que el tiempo expire en un certificado es posible renovarlo.  Para esto el usuario debe enviar o de alguna forma segura dar al alcance del administrador (o por medio de un portal) el archivo privado que se le asignó por primera vez.  Este archivo contiene la parte privada del certificado.

Primeramente se tiene que revocar el certificado y firmarlo nuevamente.  Para encontrar el certificado viejo el listado del archivo index.txt ayudará.  Se localizará el número del certificado con el serial y posteriormente se buscará el archivo XX.pem en el directorio newcerts.

El comando para realizar la renovación será el siguiente:

openssl ca -config /etc/openssl.cnf -policy policy_anything -out newcert.pem -infiles newreq.pem -startdate [now] -enddate [previous enddate+365days]

Donde [now] y [previus enddate] son formatos de fecha con la forma YYMMDDHHMMSSZ (ASN1 UTCTime)


Visualización de Certificados

Para obtener los detalles de un certificado, el siguiente comando desplegara los datos de una forma legible:

openssl x509 -in newcert.pem -noout -text

newcert.pem puede ser substituido por alguno de los certificados ubicados en el directorio newcerts.


Exportación para utilización con Windows

Windows puede utilizar los certificados para firmarse con diversos servicios como Radius o Correo Electrónico, entre otros.  Par lograr esto, es necesario exportar el certificado a formato PKCS12.

El siguiente comando realizará la acción:

openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -certfile cacert.pem -out newcert.p12 -clcerts -passin pass:contraseña1 -passout pass:contraseña2

Los parámetros passin y passout pueden ser omitidos, estos serán preguntados posteriormente.  Algunas vesiones de OpenSSL no soportan el parámetro en línea. 

Si el certificado se utilizará para fimar correo electrónico y en su creación no se utilizó como CommonName el nombre de la persona (en su lugar se utilizó su correo electrónico) se puede añadir la siguiente bandera al final del la línea.

  •  -name "Nombre de la persona"

Los valores de contraseña1 y contraseña2 refieren a la llave privada y una clave que Windows pedirá para poder exportar e importar el certificado respectivamente.

Con esto el certificado estará asociado a un nombre y Outlook podrá utilizarlo.