En aquest tutorial t'explicarem com configurar un certificat TLS/SSL de Let's Encrypt en un servidor amb Ubuntu 16.04 que executa Apache com a servidor web. També t'ensenyarem com automatitzar el procés de renovació dels certificats amb cron.
Client obsolet
Aquest article utilitza el client de Let's Encrypt i actualment està obsolet; es recomana utilitzar el client ACME següent o adaptar-hi la configuració: Certbot. Tens més informació a l'article Com obtenir certificats Let's Encrypt amb Certbot.
Els certificats SSL s'utilitzen en servidors web per xifrar el trànsit entre el servidor i el client, cosa que proporciona més seguretat als usuaris que accedeixen al teu web. Let´s Encrypt proporciona una manera fàcil d'obtenir i instal·lar certificats de confiança de manera gratuïta.
Requisits necessaris per seguir aquest tutorial
- Tenir un servidor Ubuntu 16.04 amb accés a un usuari sudo
- Servidor Apache configurat amb vhosts
Instal·lació del client de Let's Encrypt
Primer has de descarregar i instal·lar el client de Let's Encrypt des dels repositoris oficials.
Avís
Els repositoris de Clouding ja tenen el paquet que instal·larem
Actualitza els repositoris i instal·la el paquet amb apt:
$ sudo apt-get update$ sudo apt-get install python-letsencrypt-apacheUn cop finalitzada la instal·lació, podràs executar l'ordre letsencrypt.
Configurar el certificat TLS/SSL
Generar el certificat SSL per a Apache amb Let's Encrypt és força senzill. Obtindràs i instal·laràs automàticament un certificat SSL nou vàlid per als dominis proporcionats com a paràmetres.
Si vols afegir un certificat SSL a un domini específic has d'executar l'ordre següent:
$ sudo letsencrypt --apache -d dominio.comSi vols instal·lar un únic certificat per a diversos dominis o subdominis, els pots passar com a paràmetres addicionals. El primer domini de la llista serà el domini base utilitzat per Let's Encrypt per crear el certificat, mentre que la resta de noms de domini seran subdominis o àlies.
$ sudo letsencrypt --apache -d dominio.com -d www.dominio.com -d webmail.dominio.comLa primera vegada que executis aquesta ordre se't presentarà una guia pas a pas per crear el certificat. Se't demanarà que proporcionis una adreça de correu electrònic per recuperar claus perdudes i rebre avisos, i podràs triar entre habilitar l'accés HTTP i HTTPS (Easy) o forçar que totes les sol·licituds es redirigeixin a HTTPS (Secure).
Quan finalitzi la instal·lació del certificat SSL, hauries de trobar els fitxers dels certificats generats a la ruta següent /etc/letsencrypt/live. A més, pots verificar l'estat del certificat SSL amb l'enllaç següent (substituint dominio.com pel teu domini base).
https://www.ssllabs.com/ssltest/analyze.html?d=dominio.com&latest
Configurar la renovació automàtica
Els certificats de Let's Encrypt són vàlids durant 90 dies i es recomana renovar els certificats cada 60 dies per permetre un marge d'error. El client de Let's Encrypt té una ordre de renovació que comprova automàticament els certificats instal·lats i intenta renovar-los si falten menys de 30 dies perquè caduquin. Per no haver d'estar pendent cada 60 dies de la renovació dels certificats, aquest procés es pot automatitzar amb tasques de cron.
L'ordre per renovar tots els certificats instal·lats al servidor és la següent:
$ sudo letsencrypt renewSi executes l'ordre un cop has creat els certificats, obtindràs una sortida com aquesta:
Cal tenir en compte que, si s'ha creat un certificat que inclou diversos subdominis, només es mostrarà el nom del domini base a la sortida, però la renovació ha de ser vàlida per a tots els dominis inclosos en aquest certificat. Una manera senzilla de garantir que els certificats no caduquin és crear una tasca a cron perquè executi periòdicament l'ordre de renovació de manera automàtica.
L'ordre de renovació comprova primer la data de caducitat i només executa la renovació si falten menys de 30 dies perquè el certificat caduqui. Per tant, és bona idea afegir aquesta ordre a cron perquè s'executi cada setmana o fins i tot cada dia.
Per fer-ho, crearem un script perquè cron l'executi:
$ sudo vi /root/letsencrypt-renewal.shDins d'aquest fitxer nou haurem d'afegir les línies següents:
#!/bin/bash
# Clouding.io
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
log="/var/log/le-renew.log"
echo "" >> $log
/bin/date >> $log
echo "---------------------------------------------" >> $log
/usr/bin/letsencrypt renew >> $logDesem el fitxer i obrim cron amb l'ordre següent:
$ sudo crontab -eI afegeix la línia següent al final del document:
30 2 * * 1 /root/letsencrypt-renewal.shFinalment, desa el fitxer i surt de l'editor. Amb aquesta línia que has afegit, comprovaràs cada dilluns a les 2:30 a.m. si falten menys de 30 dies perquè els certificats caduquin. A més, es crearà un registre a /var/log/le-renew.log.
Conclusió
Amb aquest procés senzill ja tens el teu domini amb SSL. Ara només faltaria comprovar amb un navegador que, quan s'accedeix al domini, s'utilitza el protocol HTTPS.