Salta el contingut

PF - Com instal·lar un certificat SSL amb Let's Encrypt

En esta píndola formativa aprendrem a implementar HTTPS en un projecte web allotjat en un VPS, utilitzant Let's Encrypt, una autoritat certificadora gratuïta i reconeguda per tots els navegadors moderns.

p1_1

Important

Per als exemples pràctics utilitzarem Laravel, però els passos descrits són aplicables a qualsevol tecnologia web (WordPress, Symfony, Node.js, web estàtica…), adaptant únicament les rutes i configuracions pròpies de cada cas.


1. Requisits previs

Abans de començar, assegura’t que es compleix tot açò:

  • Tens un VPS amb accés per SSH i un usuario amb permisos de sudo (IONOS o similar)
  • Tens un domini o subdomini (ex: exemple.com)
  • El domini apunta a la IP pública del VPS (en aquesta píndola s'explica com fer-ho a IONOS)
    • Es pot comprovar executant `dig +short exemple.com
  • El projecte web funciona per HTTP al servidor (ex: http://exemple.com)
    • El port 80 està obert. Es pot comprovar amb sudo ss -tulpn | grep -E ':(80|443)\s'
    • El servidor web apunta al directori públic del projecte. Es a dir, el DocumentRoot és el propi projecte. Per a aquest exemple, utilitzarem com a directori del projecte /var/www/html/projecte/public

Domini obligatori

Let’s Encrypt no emet certificats per a una IP (ex: https://1.2.3.4). Necessites un domini.


2. Instal·lació del certificat SSL

A partir d’ací, assumim que el projecte web ja funciona per HTTP i que el domini resol correctament i sols falta realitzar la instal·lació. Les ordres dependran del servidor que estem utilitzant.

Instal·lació i generació del certificat per a nginx:

sudo apt update
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d exemple.com -d www.exemple.com

Instal·lació i generació del certificat per a Apache:

sudo apt update
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d exemple.com -d www.exemple.com

Aquesta instrucció obrirà un assistent que ens farà unes preguntes:

  • Indica un correu electrònic
  • Accepta els termes
  • Selecciona l’opció de redirigir tot el tràfic a HTTPS (recomanat)

Aleshores Certbot:

  • Validarà el domini usant la configuració HTTP existent
  • Generarà el certificat SSL
  • Modificarà automàticament Nginx
  • Habilitarà HTTPS automàticament (port 443)

Configuració finalitzada

Si el nostre projecte és una web estàtica o similar, en aquest punt ja tindrem la configuració finalitzada i disponible al port 443 (HTTPS)


3. Ajustos del projecte web (opcional)

Una vegada el HTTPS està actiu, cal revisar la configuració del nostre projecte.

Per exemple, si es tracta d'un projecte Laravel cal editar el fitxer .env per modificar la URL de l'aplicació:

APP_URL=https://exemple.com

I recarregar la configuració per a que s'aplique correctament:

php artisan config:clear