Certificado SSL gratuito para tu web en Linux con Let’s Encrypt

·

Certificado SSL gratuito para tu web en Linux con Let’s Encrypt

El tema es lo bastante serio como para tenerlo en cuenta: cada vez es más imprescindible que las webs funcionen cifradas por SSL con certificados válidos. Sin ir más lejos, Google premia a las que lo hacen mejorando su valoración y su posicionamiento. Así que vale la pena ponerse las pilas y hacerlo si tenemos la oportunidad.

Para esta web he usado Let’s Encrypt. En sus propias palabras:

Let’s Encrypt is a free, automated, and open certificate authority brought to you by the non-profit Internet Security Research Group (ISRG).

Vale la pena echar un vistazo a su web; no es muy extensa y no está de más. Allí nos sugieren visitar la web de Certbot, donde encontraremos instrucciones por sistema operativo (siempre basado en Linux) y por servidor web (Apache, Nginx, HAProxy y Plesk).

Si Certbot no nos convence, hay muchos otros clientes ACME con los que pedir el certificado. Podéis verlos aquí: letsencrypt.org/docs/client-options

Nota muy importante: para aplicar este certificado necesitamos acceso a la shell de nuestro servidor. Si, como en mi caso, lo administráis vosotros mismos o vuestro proveedor os da acceso, perfecto. Si no, no está todo perdido: si nos dejan subir nuestros propios certificados SSL, podemos pedir el certificado desde otro ordenador con el proceso manual. Este sistema es más lento y laborioso, y tiene el inconveniente de que los certificados caducan cada 90 días, así que no podremos aplicar la renovación automática como con el otro método.

Os pongo un ejemplo de cómo obtuve mi certificado en un servidor Ubuntu Server 14.04 con Apache2.

Obtener el certificado

Todo lo he hecho con el usuario root:

sudo -i

He creado una carpeta para el bot en la raíz del sistema y he descargado Certbot:

cd /
mkdir certbot
cd certbot
wget https://dl.eff.org/certbot-auto

Le cambiamos los permisos:

chmod a+x certbot-auto

Ejecutamos el script:

./certbot-auto

Y respondemos a las preguntas que nos hace:

Which names would you like to activate HTTPS for?
——————————————————————————-
1: dominio.net
2: www.dominio.net
——————————————————————————-
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ‘c’ to cancel):1,2
Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to
cancel):TuCorreo@mail.com

——————————————————————————-
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
——————————————————————————-
(A)gree/(C)ancel: A

——————————————————————————-
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let’s Encrypt project and the non-profit
organization that develops Certbot? We’d like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
——————————————————————————-
(Y)es/(N)o: Y

En este punto podemos elegir activar el https pero seguir permitiendo el tráfico por http (opción 1), o forzar que todo pase por conexión cifrada (opción 2):

Please choose whether HTTPS access is required or optional.
——————————————————————————-
1: Easy – Allow both HTTP and HTTPS access to these sites
2: Secure – Make all requests redirect to secure HTTPS access
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 2

——————————————————————————-
Congratulations! You have successfully enabled https://dominio.net and
https://www.dominio.net

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=dominio.net
https://www.ssllabs.com/ssltest/analyze.html?d=www.dominio.net
——————————————————————————-

Llegados aquí ya está hecho: nuestra web ya funciona por https. Si tenemos un WordPress, tendremos que entrar en el área de administración y cambiar la dirección del sitio web de esta forma:

Ajustes generales de WordPress con las direcciones en https

Programar la renovación automática

Abrimos el cron:

crontab -e

Elegimos Nano (por ejemplo) y añadimos la tarea de renovación automática, dos veces al día. Así nos aseguramos de detectar a tiempo cualquier problema si nos revocan el certificado:

#Renovar el certificado SSL 2 veces al día
0 3,15 * * * /certbot/certbot-auto renew --quiet --no-self-upgrade

En el ejemplo se ejecutará dos veces al día, a las 3 y a las 15 h.

Actualización: certbot-auto ya no se mantiene. En las versiones actuales de Ubuntu basta con sudo apt install certbot python3-certbot-apache y sudo certbot --apache; la renovación queda programada automáticamente con un temporizador de systemd.

Traducción hecha con ayuda de IA a partir del artículo original.