Como crear un certificado ssl de dominio para nuestra pagina web, usando cacert.org

Cacert.org, es una pagina web que nos permite de forma gratuita, darnos de alta y crear certificados de dominio que podemos utilizar para que nuestra página web tenga conexion ssl, y asi utilizar conexiones cifradas usando protocolo https.

Asi nuestros usuarios se sentiran mucho mas seguros. Eso si, al no tratarse de una entidad certificadora de pago, la mayoria de navegadores web, no vienen con cacert.org añadido a su lista de certificadoras oficiales, con lo que nuestros usuarios se deberian descargar la certificadora, e instalarla en sus equipos. Se puede descargar desde aqui: http://www.cacert.org/index.php?id=3

Requisitos:

  • Servidor bajo linux
  • Acceso a la linea de comandos como root
  • Conocimientos sobre la creación y modificación de virtualhost en apache

Vamos alla!! Lo primero es tener un dominio que nos lleve a nuestra página web, completamente accesible desde internet. Nos damos de alta en la pagina web cacert.org, y añadimos un dominio a nuestra lista de dominios de nuestra web. Yo lo he hecho añadiendo el dominio de una pagina que administro que es www.tuherenciadigital.com. (nota: con añadir el dominio tuherenciadigital.com es suficiente, no hacen falta las www)

Nos vamos a nuestro servidor linux, y desde la linea de comandos hacemos lo siguiente:

Vamos a nuestro directorio donde pondremos los certificados

cd /etc/ssl/cacert

nota: si no existe algun directorio, lo creamos

Creamos la peticion de certificado
openssl req -nodes -new -keyout private.key -out server.csr

IMPORTANTE: Cuando nos pregunte el FQDN, le ponemos el nombre completo de la direccion web. Yo en mi caso le puse: www.tuherenciadigital.com

Estando en el mismo directorio, nos descargamos el certificado raiz de cacert, y un certificado intermedio, que ya viene encadenado que podemos coger desde esta web:

http://wiki.cacert.org/SimpleApacheCert?action=AttachFile&do=view&target=CAcert_chain.pem

Con este comando lo descargamos directamente
wget http://wiki.cacert.org/SimpleApacheCert?action=AttachFile&do=get&target=CAcert_chain.pem

Siguiendo en el directorio /etc/ssl/cacert , tendremos 3 archivos:

La clave privada con el que se genero la peticion ->  private.key
El archivo de request de certificado -> server.csr
El archivo de la entidad cetificadora raiz -> CAcert_chain.pem

Abrimos el archivo server csr (con el comando nano o cat), y copiamos todo el texto, incluido las dos lineas superior y anterior.

Nos vamos a la web der cacert.org, vamos a «NUEVO» en certificados de servidor, y pegamos el codigo en el campo de texto.

Al darle a enviar, nos genera nuestro certificado de cominio.

Copiamos el codigo generado, y nos vamos a linux. Nos creamos un fichero llamado «certificado.crt», dentro del directorio de linux /etc/ssl/cacert

Ya hemos terminado con la generación de certificados. Vamos a configurar nuestro virtualhost o sitio web.

Para eso, nos vamos a nuestro archivo de sitio:

por ejemplo:

/etc/apache2/sites-enabled/nuestrositio.vhost

En este fichero, tendremos un codigo que empezara por:
<virtualhost *80>

y terminara por
</virtualhost>

En principio, lo mas sencillo, es copiar todo lo que aparece, y pegarlo justo debajo, asi tendremos 2 bloques que empiezan por
<virtualhost *:80>

Vamos al segundo bloque, y cambiamos *:80, por *:443, quedando asi:

<virtualhost *:443>

Dentro de este bloque, añadimos la configuracion SSL, escribiendo lo siguiente:

<IfModule mod_ssl.c>
        SSLEngine on
        SSLCertificateFile /etc/ssl/cacert/certificado.crt
        SSLCertificateKeyFile /etc/ssl/cacert/private.key
        SSLCACertificateFile /etc/ssl/cacert/CAcert_chain.pem     
 </IfModule>

Guardamos todo, y reiniciamos apache con:
service apache2 restart

Y en principio ya esta!! espero que os funcione!

Yo lo he probado en debian7, y esta completamente en funcionamiento.

Un saludo!