C贸mo crear nuestra propia autoridad de Certificaci贸n

  Autor: Juan Manuel Merlos T茅var 
  Fecha: Octubre 2005

Introducci贸n

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 

Creaci贸n de nuestra autoridad de Certificaci贸n

Los pasos para crear nuestra autoridad de certificaci贸n son los siguientes:

  1. Editar el fichero /etc/openssl (/usr/lib/ssl/openssl.cnf)

    • Cambiar la duraci贸n por defecto del certificado (days)
    • En caso de que los certificado sean para un Pocket PC cambiar el message diggest por defecto a sha1
      default_md = sha1
    • Editar el fichero /usr/lib/ssl/CA.sh buscando -days y ponerlo al valor adecuado. 脡ste ser谩 el tiempo que sea v谩lida la autoridad de certificaci贸n (10 a帽os ser铆an 3650 d铆as aproximadamente).
  2. 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.

Creaci贸n de Certificados firmados por nuestra AC

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:

Convertir de formato PEM a formato DER (Windows)

	openssl x509 -in cacert.pem -out cacert.cer -sha1 -outform DER

Convertir de formato PEM a formato P12 (Windows)

     
      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.

Otras tareas comunes

Generar el fichero CRL

         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.

Revocar un Certificado

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

Generar los par谩metros DH (Diffie hellman)

         openssl dhparam -out dh1024.pem 1024