Autor: Juan Manuel Merlos TévarFecha: Octubre 2005
Hay cierto tipo de tareas que requieren el uso de la tecnlogía de la criptografía de clave pública. En mi experiencia personal el uso principal ha sido durante la creación de redes privadas virtuales.
Por suerte o por desgracia para el lector de este texto (en función de lo que busque) no vamos a explicar los conceptos de la criptografía de clave pública, sólo introduciremos vagamente el concepto de autoridad de certificación.
Autoridad de Certificación (cuyo acrónimo es AC o en Inglés CA): Es una entidad que que se encarga de firmar digitalmente certificados. Un usuario crea un certificado que le identifica, a continuación, éste le solicita a la autoridad de certificación que le firme ese certificado de tal forma que cualquier usuario que confíe en esa autoridad de certificación pueda confiar también en la veracidad de la identidad usuario cuyo certificado ha sido firmado. Una autoridad de certificación poseerá un certificado que será distribuído de forma pública y que servirá a los usuarios para comprobar si la firma ha sido hecha por dicha autoridad de certificación.
Las herramientas necesarias para la creación de una autoridad de certificación bajo el sistema operativo GNU/Linux se encuentran en el paquete openssl. Para realizar su instalación en el caso de Debian GNU/Linux:
apt-get install openssl
Los pasos para crear nuestra autoridad de certificación son los siguientes:
Editar el fichero /etc/openssl (/usr/lib/ssl/openssl.cnf)
Crear una autoridad de certificación (CA.sh ha de estar en el path, en Debian está en el directorio /usr/lib/misc/)
cd
mkdir miCA
cd miCA
/usr/lib/misc/CA.pl -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
......................................++++++
..++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Provincia
Locality Name (eg, city) []:Ciudad
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Merlos.org
Organizational Unit Name (eg, section) []:Certificados
Common Name (eg, YOUR name) []:Nombre AC
Email Address []:mimail@site.com
Se crearán básicamente dos ficheros importantes, el certificado de la AC y su clave privada. Cada vez que queramos firmar un certificado tendremos que utilizar la clave que se nos pidió al crear la AC.
demoCA/cacert.pem demoCA/private/cakey.pem
En general, el certificado de la autoridad de certificación (cacert.pem) deberá poseerlo cualquier usuario que desee comprobar la autenticidad de otros certificados firmados digitalmente por nuestra autoridad de certificación.
Pasos para crear un nuevo certificado firmado por la autoridad de certificación:
cd
cd miCA
openssl req -new -keyout newkey.pem -out newreq.pem -days 360
cat newkey.pem newreq.pem > new.csr
openssl ca -policy policy_anything -out newcert.pem -infiles new.csr
Cuando ejecutemos la solicitud del certificado (openssl req) se nos pedirán los datos del usuario que será propietario del certificado (son los mismos campos de datos que se nos pidieron al crear la AC).
Los ficheros creados son:
newkey.pem: Clave privada del usuario
newreq.pem: Solicitud de Certificado (Certificate request)
newcert.pem: Certificado X.509 del usuario firmado por la AC
Es posible que tengamos que convertir los certificados a formatos aceptados por sistemas operativos comerciales (léase MS WinDows), para ello podremos ejecutar los siguientes comandos:
openssl x509 -in cacert.pem -out cacert.cer -sha1 -outform DER
openssl pkcs12 -export -in newcert.pem -inkey newkey.pem -certfile demoCA/cacert.pem -out newcert.p12
Cuando se importe este certificado P12, se estará importando también el certificado de la autoridad de certificación, así como la clave privada, así que sólo es necesario este fichero.
openssl ca -gencrl -out crl.pem
Este fichero contiene la información de los certificados que han sido revocados, por tanto, cuando revoquemos algún certificado deberemos actualizar este fichero y copiarlo en los lugares que lo utilicen.
Esta tarea se realiza cuando un certificado ha dejado de tener validez o ya no confiamos en la persona que lo posee
openssl ca -revoke certificado.pem
openssl dhparam -out dh1024.pem 1024