Generar certificados válidos startssl en apache

Es importante que ciertas comunicaciones estén cifradas, para ello vamos a generar un certificado y lo vamos a verificar con la entidad certificadora startssl que nos permite validar certificados SSL. También podríamos hacer este paso sin validarlo en startssl, pero luego nos saldría cuando navegamos en el servidor que el certificado no es válido, pero la navegación sería segura igualmente.

Lo primero es generar los ficheros de certificado, el .csr, el .key y el .crt en nuestro servidor. Vamos a generar las claves para admin.sip.polaris.capa8.cat.

Verificaremos que tenemos instalado el paquete openssl, si no es así, lo instalamos:

root@polaris-pbx:~# apt-get install openssl

Nos iremos al directorio /etc/ssl/private y ahí generamos las claves

root@polaris-pbx:/etc/ssl/private# openssl req -nodes -newkey rsa:2048 -keyout admin.sip.polaris.capa8.cat.key -out admin.sip.polaris.capa8.cat.csr
Generating a 2048 bit RSA private key
...............................+++
......................+++
writing new private key to 'admin.sip.polaris.capa8.cat.key'
-----
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]:Barcelona
Locality Name (eg, city) []:Barcelona
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Unificacion Tecnologica de Servicios, S.L.
Organizational Unit Name (eg, section) []:Capa8
Common Name (e.g. server FQDN or YOUR name) []:capa8.cat
Email Address []:info@capa8.cat

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Ahora tenemos el .csr y el .key y con ellos vamos a generar el .crt

root@polaris-pbx:/etc/ssl/private# openssl x509 -req -in admin.sip.polaris.capa8.cat.csr -signkey admin.sip.polaris.capa8.cat.key -out admin.sip.polaris.capa8.cat.crt
Signature ok
subject=/C=ES/ST=Barcelona/L=Barcelona/O=Unificacion Tecnologica de Servicios, S.L./OU=Capa8/CN=capa8.cat/emailAddress=info@capa8.cat
Getting Private key

Una vez creados, vamos a la web startssl e introducimos nuestro csr en la web. Tenemos 2 opciones, o crear un certificado para trabajar en la web o usar el modo express lane. La recomendable es que si vas a crear varios certificados es que te crees un certificado de la web y trabajes con él, porque sino te va a estar pidiendo los datos cada vez que vayas a crear un certificado. Si es la primera vez haz sign-up, si ha has entrado otras veces, usa la otra opción.

Una vez entramos nos pide si queremos salir o ir al panel de control. Vamos al panel de control y nos pide el dominio por el cual queremos validar el certificado. En este ejemplo voy a poner capa8.cat (sin los subdominios) y le doy a continue.

Escogemos el mail de verificación que hemos definido en nuestro certificado contra la página startssl y nos manda a nuestro correo una clave identificativa que la ponemos en el siguiente formulario. Le damos a continue.
Nos da otro mensajito identificativo y le damos a continue.

En el siguiente paso nos dice de crear el fichero .csr, pero como ya lo hemos creado le decimos skip. La ventaja de esto es que creando el .csr en nuestro equipo podemos generar el certificado sin password, así que cada vez que reiniciamos apache no nos va a pedir el password, si lo hacemos desde la web, nos obliga a poner un password!

Le damos a skip y copiamos el contenido de nuestro fichero .csr (certificate request) en el formulario y le damos a continue y nos dice que todo ok (si hemos seguido este manual al pie de la letra!)

A continuación, vamos a indicarle el subdominio que estamos creando:

admin.sip.polaris.capa8.cat

Y listos! :)

Ahora vamos a configurar apache2

Si ya tenemos un virtualhost funcionando simplemente vamos a cambiar algunas cosas:

<IfModule mod_ssl.c>
<VirtualHost *:443>

Activamos el modulo ssl y definimos que el puerto de trabajo va a ser el 443 (https) en lugar del 80 (http).

        SSLEngine on
        SSLCertificateFile /etc/ssl/private/admin.sip.polaris.capa8.cat.crt
        SSLCertificateKeyFile /etc/ssl/private/admin.sip.polaris.capa8.cat.key
        SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem

Aquí le indicamos los certificados que hemos generado, el fichero sub.class1.server.ca.pem nos lo descargamos.

root@polaris-pbx:/etc/apache2/sites-enabled# cd /etc/ssl/certs
root@polaris-pbx:/etc/ssl/certs# wget http://www.startssl.com/certs/sub.class1.server.ca.pem

Y ahora finalmente reiniciamos apache. Es probable que si aún no has trabajado con ssl en tu servidor apache, tengas que activar el módulo ssl

root@polaris-pbx:/etc/ssl/certs# a2enmod ssl
root@polaris-pbx:/etc/ssl/certs# service apache2 restart

Y ahora accedemos por https a nuestro subdominio y vemos que podemos acceder por ssl y que el certificado que hemos generado tiene nuestros datos.

4 Comments

  1. Pingback: Proxy apache con https | Blackhold

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.