IMPORTANT: aquest tutorial és per a la instal·lació d’un servidor NGINX, php i base de dades mariadb en ubuntu 20.04 (serveix per altres versions d’ubuntu properes).

Antecedents

Ja fa un temps vaig explicar al tutorial d’instal·lació de moodle com crear un certificat Let’s Encrypt però que només servia per a un domini o subdomini, és a dir, en el cas, de tindre més d’un subdomini dins del domini principal s’havien de crear certificats per a cadascun d’ells. En este tutorial vos explique com crear un certificat “wildcard” (comodí) que serveix per a tots els subdominis d’un domini.

Pas 1. Instal·lar certbot

En primer lloc s’ha d’instal·lar l’eina certbot si no la teniu ja instal·lada. Ho podeu fer només teclejant la següent ordre al terminal:

sudo apt install letsencrypt

Ara que l’eina està instal·lada, ja podeu procedir a la generació de certificats.

Let’s Encrypt proporciona moltes maneres de validar el domini per a la generació de certificats SSL. No podreu generar certificats si no teniu accés als registres DNS del vostre domini, de fet, ara per ara, l’únic mètode de validació per a certificats “wildcard” que acepta Let’s Encrypt és mitjançant la verificació de DNS.

Per tant, per a generar un certificat comodí per al domini * .exemple.com , executeu les ordres a continuació. També heu d’incloure el domini principal al registre.

sudo certbot certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory -d "*.exemple.com" -d exemple.com

Si es fixeu amb l’ordre anterior li indiquem amb --preferred-challenges dns-01 que volem fer la validació del domini a través d’un registre DNS.

Heu de tindre en compte que l’odre anterior només serveix per a crear els certificats (“certonly“) i no modifica els arxius de configuració de NGINX, s’han de modificar manualment.

Si disposeu d’un IP pública fixa podeu afegir a l’ordre:  --manual-public-ip-logging-ok, així s’associarà la vostra IP pública amb certificat. L’ordre quedaria de la següent manera:

sudo certbot certonly --manual --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory -d "*.exemple.com" -d exemple.com

Després d’executar l’ordre anterior, Let’s Encrypt proporcionarà una cadena de text per afegir un registre de text DNS.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None

-------------------------------------------------------------------------------
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
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for exemple.com

-------------------------------------------------------------------------------
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
-------------------------------------------------------------------------------
(Y)es/(N)o: y

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.exemple.com with the following value:

mRQALGejUo23R7byWWuOnPwlEs+/Pho/NPrSC5s1KzE=Rly

Before continuing, verify the record is deployed.

Pas 2. Crear un registre TXT

En aquest pas heu d’accedir al vostre proveïdor de domini (Google, GoDaddy, Namecheap…) i crear un registre TXT amb la cadena de text generada anteriorment.

De forma genèrica heu de crear un registre DNS amb les següents dades:

  • Tipus de registre DNS: TXT
  • Host: _acme-challenge
  • Valor: mRQALGejUo23R7byWWuOnPwlEs+/Pho/NPrSC5s1KzE=Rly (cadena de text creada anteriorment)
  • TTL: Automàtic (o 30 min)

Espereu uns quants minuts abans de continuar amb l’ordre que tenim en execució i premem ENTER per a continuar. Alguns proveïdors de DNS poden tardar més en propagar els canvis a les DNS i es possible que vos puga fallar. S’hauria de repetir l’ordre en el cas de fallada.

Si la sol·licitud ha tingut èxit vos ha d’eixir un missatge semblant a aquest:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/exemple.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/exemple.com/privkey.pem
   Your cert will expire on 2020-08-30IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-30-08. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Per verificar que el certificat s’ha creat correctament, executeu les ordres a continuació:

sudo certbot certificates

Vos hauria d’aparèixer un missatge semblant al següent:

Found the following certs:
  Certificate Name: exemple.com
    Domains: *.exemple.com
    Expiry Date: 2020-30-08 07:48:04+00:00 (VALID: 85 days)
    Certificate Path: /etc/letsencrypt/live/exemple.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/exemple.com/privkey.pem

Depenent de la vostra configuració potser cal fer canvis als arxius de configuració de NGINX del vostre servidor.

Espere que vos haja pogut ser útil.

Publicat per dtalens

Professor. Amant de la tecnologia en general i especialment del món web.

Deixa un comentari

L'adreça electrònica no es publicarà.