SSL gratis con Let’s Encrypt en 5 pasos

Hay muchos y variados motivos para instalar un certificado SSL en tu web. Uno de ellos, seguramente el más relevante, es la seguridad de los datos que los dispositivos de tus visitantes intercambian con tu servidor web.

Otra buena razón es ofrecer una imagen más profesional y fiable de tu sitio y, por consiguiente, de tu marca. Y también hay quien ve HTTPS como forma de mejorar el  posicionamiento en algunos buscadores, o simplemente como moda en expansión.

EVOLUCIÓN RECIENTE DE HTTPS

Los certificados SSL tienen (o han tenido) fama de ser caros. Además no todos los proveedores de hosting los ofrecen o dan facilidades para instalar uno si no es a través de ellos.

Estos y otros han podido ser los motivos por lo que hasta hace poco la navegación HTTPS era algo que practicamente solo webs de comercio, banca y administración electrónica se sentían obligadas a ofrecer.

Este panorama ha ido cambiando en los últimos meses y los sitios web con certificado SSL parecen haber proliferado más allá de esos sectores que he mencionado.

A ello han podido contribuir varios factores. Por un lado, cada vez más proveedores de hosting ofrecen certificados SSL a precios competitivos o directamente incluídos en algunos de sus planes. Por otro lado, desde 2014 llevamos oyendo y leyendo que Google empezará a utilizar HTTPS como señal de ranking, lo cual es un argumento bastante convincente para mucha gente.

Y LLEGÓ LET’S ENCRYPT

En este escenario ha aparecido un nuevo actor en forma de autoridad de certificación. Me refiero a Let’s Encrypt, que desde abril de 2016 emite certificados abiertos, libres y gratuitos.

¿Quién ha montado Let’s Encrypt? Detrás de esta iniciativa está la Linux Foundation, acompañada de algunos grandes de Internet como Mozilla o Automattic. Con mentores de este calibre parece difícil que este proyecto vaya a ser flor de un día.

A fecha de hoy ya hay algunos proveedores de hosting que ofrecen certificados de Let’s Encrypt con un solo click en sus planes de alojamiento más básicos. Sin embargo, esta todavía no es la tónica general en el mercado, así que es posible que tu proveedor todavía te hable de tarifas y plazos que te disuadan de que eso del SSL puede esperar.

Con Let’s Encrypt ya no hay excusa. En 5 sencillos pasos, sin pagar nada y desde tu línea de comandos puedes tener tu sitio web bajo protocolo HTTPS.

¿Quieres saber cómo? Estás en el lugar indicado. Sigue leyendo.

REQUISITOS PREVIOS

  • Acceso al Panel de Control (cPanel) de tu alojamiento, y que tu proveedor permita configurar SSL desde allí.
  • Acceso FTP al sistema de archivos de tu servidor web.
  • Acceso a la línea de comandos de tu equipo local. En este tutorial yo usaré Linux Mint 17.3.
  • Tener instalado el sistema de control de versiones ‘git‘.

PASO 1: Instalar el cliente de Let’s Encrypt

Desde la línea de comandos de nuestro equipo, vamos al directorio donde queramos instalar el cliente (en mi caso el directorio home) y tecleamos:


1
git clone https://github.com/letsencrypt/letsencrypt

PASO 2: Generar el Certificado

Accedemos al directorio donde se ha instalado el cliente (generalmente se llamará ‘letsencrypt’) y tecleamos:


1
2
cd letsencrypt
./letsencrypt-auto certonly -a manual --rsa-key-size 4096 -d example.com -d www.example.com

Asegúrate de sustituir el dominio del ejemplo por el tuyo propio.

La aplicación te preguntará si estás de acuerdo con registrar tu IP como solicitante del certificado. Respondemos que sí, y no hacemos nada más hasta comprender y seguir las instrucciones del siguiente paso:

Instalación Let's Encrypt
Instalación Let’s Encrypt – Registro de la dirección IP del solicitante

PASO 3: Verificar que el dominio es nuestro

Let’s Encrypt necesita verificar que realmente somos administradores del dominio para el que solicitamos el certificado. Para ello, tras haber respondido que sí al registro de nuestra IP nos propone un método para hacerlo.

Let's Encrypt SSL Install
Verificación del dominio

Tenemos que asegurarnos que en la ruta que indica haya un fichero con un nombre determinado y que contenga una cadena de caracteres y dígitos.


1
2
3
Make sure your web server displays the following content at http://example.com/.well-known/acme-challenge/QAQWxWS1tASKl51CxXXXXX-d6UIqtin2E1ZNwNxj4QY before continuing:

QAQWxWS1tASKl51CxXXXXX-d6UIqtin2E1ZNwNxj4QY.riCmRyXKxLm23wbAsrxcF4E-tWY_cr0gsMB5N6UL894

En el servidor web donde está alojado nuestro sitio web, creamos la ruta .well-known/acme-challenge y el fichero con el nombre y contenido indicados (sustituir por los que os proponga la aplicación en vuestro caso). Para ello necesitamos acceder al servidor por SSH o FTP.

Una vez creado, volvemos a la línea de comandos y pulsamos ENTER para continuar con el proceso donde lo habíamos dejado. La verificación es necesaria para cada uno de los dominios que hayamos introducido en la llamada al cliente.

PASO 4: Instalar el Certificado SSL en cPanel

Al finalizar el punto anterior, Let’s Encrypt habrá generado los certificados y los habrá guardado en la siguiente ruta de nuestro equipo (una ruta diferente por cada dominio):


1
/etc/letsencrypt/live/example.com

En esa ruta se habrán creado 4 ficheros:

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

Ya en el cPanel de nuestro alojamiento, accedemos a la gestión de certificados SSL e indicamos que queremos crear uno nuevo. La forma más cómoda de hacerlo es cargando el certificado como texto. Para ello necesitaremos acceder y editar los ficheros anteriores con permisos de superusuario o administrador, y copiar y pegar su contenido en los siguientes campos:


1
2
3
4
5
Clave privada ( *.key ) -> privkey.pem

Certificado (*.crt ) -> cert.pem

Certificado CA (*-ca.crt ) -> chain.pem
Instalación Let's Encrypt
Configuración de los certificados en el cPanel del Proveedor de Hosting

Desde el mismo cPanel, si es necesario, asignamos desde la configuración de hosting el nuevo certificado al dominio correspondiente.

Instalación Let's Encrypt
Asignar el nuevo certificado al dominio desde cPanel.

PASO 5: Redireccionar todo el tráfico a HTTPS

Para hacer que todas las peticiones se sirvan bajo protocolo seguro, añadimos las siguientes líneas a nuestro fichero .htaccess.


1
# BEGIN Force SSL
1
# This should be the first rule before other rules
1
<IfModule mod_rewrite.c>
1
 
1
RewriteEngine On
1
 
1
RewriteCond %{HTTPS} !=on
1
 
1
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
1
</IfModule>
1
# END Force SSL

CONSIDERACIONES FINALES

Como véis, en 5 sencillos pasos que no llevan ni 10 minutos, podemos tener nuestro sitio web alojado en un servidor compartido bajo protocolo seguro con un certificado libre, abierto y gratuito.

Los certificados emitidos por Let’s Encrypt caducan a los 90 días. Tienen sus motivos para ello. Motivos de seguridad, y motivos para impulsar la automatización de las renovaciones. En futuros artículos trataré sobre este tema, así como sobre otras formas más amigables de generar certificados para sitios WordPress, por ejemplo.

Mientras tanto os invito a consultar la documentación de Let’s Encrypt y su foro de soporte.

Seguro que algunos de vosotros ya habéis instalado SSL con Let’s Encrypt, y tal vez de una forma hasta más sencilla. Si es así, te animo a compartirlo en los comentarios. De igual forma, si encontráis cualquier fallo o dificultad en alguno de los pasos, hacédmelo saber y prometo que os responderé.

Desarrollo WebSoftware Libre