Hola lectores!

La semana pasada me llegó un requerimiento para generar un archivo CSR (Certificate Signing Request) para la creación de un certificado de seguridad, y pues bien, hoy me doy a la tarea de explicar paso por paso la creación del mismo incluyendo las llaves y todo lo que se tiene que generar.

¿Para qué nos sirve un certificado de seguridad?

Los certificados de seguridad son una medida de confianza adicional para las personas que visitan y hacen transacciones en su página web, le permite cifrar los datos entre el ordenador del cliente y el servidor que representa a la página. El significado más preciso de un certificado de seguridad es que con él logramos que los datos personales sean encriptados y así imposibilitar que sean interceptados por otro usuario. Ahora es muy común ver en nuestros exploradores el protocolo de seguridad https; mediante éste, básicamente nos dice que la información que se envía a través de Internet, entre el navegador del cliente y el servidor donde está alojada la página, se encripta de forma que es casi imposible que otra persona reciba, vea o modifique los datos confidenciales del cliente.

En el mundo de Internet, toda comunicación cifrada el certificado debe ser firmado por una Entidad Certificadora Autorizada (CA) que nos garantiza que el servidor donde está alojada la página es quien dice ser. En algunas ocasiones, es necesario crear certificados auto-firmados para realizar pruebas o para montar servidores internos.

Con un servidor Unix/Linux y con el programa OpenSSL es muy fácil y rápido crear este tipo de certificados.

Pues bien, ahora que ya leímos algo de teoría pasemos a la creación del certificado:

  1. Generar la llave privada.Una de las tantas bondades de OpenSSL es el poder generar una llave RSA privada y un archivo CSR, pero también nos sirve para crear los certificados autofirmados que por lo regular son utilizados para uso interno o para realizar pruebas.
    El primer paso es crear la llave privada RSA. Esta clave es de 1024 bits que se cifra utilizando 3-DES y se almacena en formato PEM para poder ser leído en formato ASCII.

    openssl genrsa -des3 -out server.key 1024



  2. Generar un CSR.
    Ahora que tenemos creada la clave privada procedemos a generar un archivo CSR (Solicitud de firma de certificado, por sus siglas en inglés).  Este archivo tiene 2 utilidades, la primera, enviarlo a una entidad certificadora como Verisign o Thawte, quienes validarán la identidad del solicitante y generarán un certificado firmado; y la segunda, es la de auto firmar el CSR, que es lo que explicaremos más adelante.
    Durante la generación del archivo CSR, se solicitarán ciertos datos informativos que serán los atributos X.509 del certificado.
    Uno de los campos que se solicitan el es “Common Name”, en este campo es muy importante poner el nombre del dominio del servidor que va a ser protegido por SSL. Como ejemplo, si el sitio va a ser https://secure.csimx.net, en el campo se pondría secure.csimx.net.
    El siguiente comando muestra como generar el archivo CSR

    openssl req -new -key server.key -out server.csr

  3. Borrar la contraseña de la clave.
    Un desafortunado efecto secundario de la transmisión de una clave privada con contraseña (passphrase) es que Apache o el servidor web en cuestión te pedirá la frase cada vez que se inicie el servidor web. Esto no siempre es conveniente, sobretodo si el servidor se reinicia automáticamente. Las propiedades mod_ssl  de Apache incluye la capacidad de utilizar un programa externo en lugar de escribir la frase a mano, sin embargo, esto no es necesariamente la opción más segura. Es posible eliminar el cifrado 3-DES de la clave para que no sea necesario escribir una clave. Eso sí, si la clave privada ha dejado de estar cifradas, ¡es fundamental que este archivo sólo pueda ser leído por el usuario root!. Si un tercero obtuviera la clave privada sin cifrar, el certificado correspondiente deberá ser revocado. Para quitar la frase de paso de la clave, utiliza el siguiente comando:

    cp server.key server.key.org
    openssl rsa -in server.key.org -out server.key

     

  4. Crear el certificado autofirmado.
    Si todo lo anterior se llevó a cabo, en este punto podemos crear el certificado autofirmado. Este certificado marcará error en el navegador del cliente ya que la entidad certificadora es desconocida y no confiable.El siguiente comando muestra como generar el certificado con una validez de 1 año.

    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

  5. Instalar la clave privada y el certificado en el Apache.
    Cuando se instala Apache con mod_ssl, se crean diversos subdirectorios de configuración dependiendo donde y como se configuró e instaló apache.

    cp server.crt /usr/local/apache/conf/ssl.crt
    cp server.key /usr/local/apache/conf/ssl.key

  6. Configurar los Virtual Hostscon SSL.

    SSLEngine on
    SSLCertificateFile /etc/apache2/conf.d/ssl.crt/server.crt
    SSLCertificateKeyFile /etc/apache2/conf.d/ssl.key/server.key
    SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown
    CustomLog logs/ssl_request_log \
    “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

  7. Reiniciar apache.

    service apache2 restart

  8. Probar.

    https://secure.csimx.net

 

 

Visto en www.hackplayers.com