Inicio > tecnología > Crea tu propia entidad certificadora

Crea tu propia entidad certificadora

Poco a poco, cada día van apareciendo en nuestra vida los certificados digitales que nos sirven para identificarnos y firmar de forma digital las acciones que realizamos en internet. Pero si lo que necesitas es tener unos cuantos certificados para realizar tus pruebas de programación, estarías muy limitado con los certificados que podrás obtener de forma gratuita.

Para ello lo mejor que puedes hacer es crear tu propia entidad certificadora, utilizando el proyecto OpenSSL. Con ello podrás generar tanto certificados de servidor como de cliente para poder hacer todas las pruebas que necesites. Vamos por partes:

Instalar el software

Para instalar openSSL en linux, sólo es necesario introducir el siguiente comando en el terminal

apt-get install openssl

Para obtener la versión para Windows, puedes bajar los binarios desde aquí.

Como ayuda para facilitar la creación de certificados crearemos los siguientes ficheros de configuración:

config1.txt con el siguiente contenido

basicConstraints = critical,CA:FALSE
extendedKeyUsage = serverAuth

config2.txt con el siguiente contenido

basicConstraints = critical,CA:FALSE
extendedKeyUsage = clientAuth

Crear la entidad certificadora

Los primero que hay que hacer es crear las claves de la entidad certificadora, que será la que genere el resto de certificados. Desde el terminal sólo tendrás que introducir la siguiente instrucción:

openssl req -x509 -newkey rsa:2048 -keyout cakey.pem -days 3650 -out cacert.pem

Lo que significa que estamos creando una nueva entidad que generará certificados X509 con algoritmo de encriptación rsa de 2048 bytes. Generará la clave privada de la entidad en el fichero cakey.pem y la clave publica en el cacert.pem.

El parámetro -days con 3650 indica que la entidad certificadora no expirará en 10 años.

Nos pedirá una contraseña para nuestra entidad certificadora, que es muy importante no perder. Nos pedirá también una serie de datos (País, Nombre de Empresa…), que nos identifica como entidad certificadora.

Este paso sólo es necesario realizarlo la primera vez, o cuando la entidad certificadora que teníamos haya expirado.

Generar certificado de servidor

Podemos crear tantos certificados de servidor como queramos, siguiendo estos pasos:

Primero generamos la clave privada del nuevo certificado digital:

openssl genrsa -des3 -out serv-priv.pem -passout pass:password 2048

Con esto generamos la clave privada la cual tendrá un algoritmo de cifrado triple des (-des3) de 2048 y se almacenara en el fichero (-out) serv-priv.pem y con el comando -passout pass: indicamos la contraseña para nuestra clave privada.

El siguiente paso es generar la petición del certificado para indicar el propietario del mismo:

openssl req -new -subj "/DC=fsandin.wordpress.com/OU=wordpress.com/CN=fsandin"
-key serv-priv.pem -passin pass:password -out petic-certificado-serv.pem

Con el parametro -subj le indicamos a quien pertenece el certificado, para ello ponemos entre comillas cada uno de los apartados que identifican al servidor, separados por / . Le asociamos a la petición la clave privada que hemos hecho en el comando anterior -key serv-priv.pem utilizando la contraseña de la clave privada -passing pass:password. La petición se almacenará en el fichero petic-certificado-serv.perm

Por último generamos el certificado:

openssl x509 -CA cacert.pem -CAkey cakey.pem -req -in petic-certificado-serv.pem
-days 3650 -extfile config1.txt -sha1 -CAcreateserial -out servidor-cert.pem

Con esto estamos creando un certificado del tipo x509 cuya entidad certificadora está en cacert.pem, su clave privada en cakey.pem y que el certificado a generar tendrá las especificaciones definidas en el apartado anterior, almacenadas en el fichero de petición petic-certificado-serv.pem.

El certificado tendrá una validez de diez años y su uso estará destinado para ser certificado de servidor (descrito en el fichero de configuración config1.txt)

Para algunos servidores (como apache), los ficheros necesarios para utilizar el certificado son servidor-cert.pem y serv-priv.pem. Para IIS se necesita realizar la importación, por lo que será necesario exportarlo con el siguiente comando.

openssl pkcs12 -export -in servidor-cert.pem -inkey serv-priv.pem -certfile
cacert.pem -out cert-serv-pck12.p12

Generar certificado de cliente

Igual que para los certificados para servidor, empezamos generando la clave privada del cliente:

openssl genrsa -des3 -passout pass:password -out client-priv.pem 2048

Ahora generamos la petición del certificado:

openssl req -new -key client-priv.pem -passin pass:password -subj
"/CN=NOMBRE Nombre y Apellidos - NIF 00000000A/OU=wordpress.com
/DN=fsandin.wordpress.com" -out petic-cert-client.pem

Si estructuramos el parámetro -subj igual que los certificados de identificación (DNIe, FNMT…) le indicamos a quién pertenece el certificado y podremos simular el comportamiento de los mismos.

Emitimos el certificado cliente :

openssl x509 -CA cacert.pem -CAkey cakey.pem -req -in petic-cert-client.pem
-set_serial 3 -days 365 -extfile config2.txt -sha1 -out client-cert.pem

El certificado tendrá una validez de un año, el número de certificado indicado con el parámetro -set_serial debería ser único.

Al ejecutar esta línea nos pedirá el password que le pusimos a nuestra entidad certificadora obteniendo finalmente el fichero client-cert.pem que es nuestro certificado.

Y por último vamos a exportarlo para enviárselo a su nuevo dueño. Para ello necesitamos crear con nuestro certificado un fichero comprimido en formato pkcs12.

openssl pkcs12 -export -in client-cert.pem -inkey client-priv.pem
-certfile cacert.pem -out cert-cliente-pck12.p12

Al ejecutar esto nos pedirá la contraseña del certificado cliente, un Export Password, que es la contraseña que teneis que poner para comprimir el archivo y que será la que se necesita para importarla en el navegador. Por último pedirá que verifiquéis el Export Password para confirmar que se ha introducido correctamente.

Fuente: bulma.net

  1. daniel villalpando
    15 agosto 2012 a las 22:16

    buen articulo y funciona es lo mejor de todo, muchas gracias, solo una pregunta para generar un .key desde las llaves publicas y privadas generadas (.pem) como quedan funcionando utilizando todos tus paso como se realiza?

  1. 25 enero 2010 a las 16:23
  2. 1 diciembre 2011 a las 14:43
  3. 7 diciembre 2011 a las 21:24

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: