Requisits
Abans que comencis
Instal·leu Nginx
Instal·leu Python i Lexicon
Instal·leu el client acme.sh
Obteniu certificats de comodí de Let's Encrypt
Configura el servidor web Nginx
El març de 2018, Let's Encrypt va afegir suport per als certificats de comodí. Els certificats de comodí us permeten protegir tots els subdominis de primer nivell d'un domini amb un únic certificat. Els certificats de comodí només es poden obtenir mitjançant ACMEv2, que és una versió actualitzada del protocol ACME. Per utilitzar ACMEv2 per a certificats amb comodí o no, necessitareu un client que s'hagi actualitzat per admetre ACMEv2. Un d'aquests clients és acme.sh, que és un client de protocol ACME/ACMEv2 escrit exclusivament en llenguatge Shell (shell Unix) sense cap dependència. A més, els dominis comodís s'han de validar mitjançant el tipus de desafiament DNS-01. Això implica que cal modificar els registres DNS TXT per demostrar el control sobre un domini per obtenir un certificat de comodí.
En aquesta guia, expliquem com obtenir i desplegar certificats de comodí gratuïts de Let's Encrypt a Ubuntu 19.04 mitjançant l'ús del acme.sh
client, l' eina Lexicon per a la manipulació automàtica de registres DNS consumint l'API Vultr i implementar certificats al servidor web Nginx.
Requisits
- Servidor al núvol Ubuntu 19.04 Vultr recentment implementat.
- Tens un nom de domini registrat. Aquesta guia utilitza
example.com
com a exemple un domini.
- Assegureu-vos que heu establert els registres DNS A/AAAA i CNAME per al vostre nom de domini totalment qualificat (FQDN). És possible que vulgueu consultar el tutorial d'Introducció al Vultr DNS si necessiteu familiaritzar-vos amb els conceptes de DNS.
- Accés a l'API Vultr habilitat al tauler de control del vostre compte Vultr.
Abans que comencis
Comproveu la versió d'Ubuntu.
lsb_release -ds
# Ubuntu 19.04
Creeu un compte d'usuari nou amb sudo
accés i el vostre nom d'usuari preferit i canvieu-hi. Fem servir johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NOTA : Substituïu-lo johndoe
pel vostre nom d'usuari.
Configura la zona horària.
sudo dpkg-reconfigure tzdata
Assegureu-vos que el vostre sistema Ubuntu estigui actualitzat.
sudo apt update && sudo apt upgrade -y
Instal·leu els paquets necessaris.
sudo apt install -y git wget curl socat
Instal·leu Nginx
Instal·leu el servidor web Nginx.
sudo apt install -y nginx
Comproveu la versió.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Instal·leu Python i Lexicon
Com a primer pas en el procés d'obtenció de certificats comodís de Let's Encrypt mitjançant acme.sh i Vultr API, cal instal·lar Python i Lexicon . Lexicon és un paquet de Python que proporciona una manera de manipular els registres DNS de diversos proveïdors de DNS d'una manera estandarditzada.
Instal·leu Python si encara no està instal·lat al vostre sistema.
sudo apt install -y python3
Confirmeu la instal·lació verificant la versió.
python3 --version
# Python 3.7.3
Instal·leu l'eina Lexicon. Un lèxic és una eina de Python que us permet manipular registres DNS de diversos proveïdors de DNS de manera estandarditzada.
sudo apt install -y lexicon
Comproveu la versió del lèxic.
lexicon --version
# lexicon 3.0.8
Instal·leu el acme.sh
client
Acme.sh
és un client de protocol ACME escrit exclusivament en llenguatge Shell (shell Unix) que automatitza el procés d'obtenir un certificat signat mitjançant Let's Encrypt. Admet ACME v1 i ACME v2, i el més important és compatible amb els certificats comodí ACME v2. En aquesta secció, instal·lem un script Acme.sh.
NOTA: Es recomana utilitzar l' root
usuari per instal·lar acme.sh
, encara que no requereix root
/ sudo
accés.
Canvia a root
usuari de l'usuari normal si l'has creat.
sudo su - root
Descarrega i instal·la acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Comproveu la versió.
acme.sh --version
# v2.8.2
Obteniu certificats de comodí de Let's Encrypt
Per obtenir un certificat comodí, només podem utilitzar el mètode de validació DNS. Utilitzem Lexicon i Vultr DNS API per manipular els registres TXT DNS.
Obteniu certificats de comodí RSA i ECC per al vostre domini.
# Configure your API key and username
export PROVIDER=vultr
export LEXICON_VULTR_USERNAME="[email protected]"
export LEXICON_VULTR_TOKEN="XXXXXXXXXXXXXXX"
# RSA 2048
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength 2048
# ECC 256
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength ec-256
NOTA : No oblideu substituir-lo example.com
pel vostre nom de domini i substituir els valors de marcador de posició de l'API Vultr pels vostres.
Després d'executar les ordres anteriors, els vostres certificats i claus es troben a:
- Per a RSA:
~/.acme.sh/example.com
directori.
- Per a ECC/ECDSA:
~/.acme.sh/example.com_ecc
directori.
NOTA : No hauríeu d'utilitzar els fitxers cert a la ~/.acme.sh/
carpeta, només són per a ús intern, l'estructura del directori pot canviar en el futur.
Per llistar els vostres certificats, podeu executar:
acme.sh --list
Creeu una carpeta per emmagatzemar els vostres certificats en producció. Utilitzem el /etc/letsencrypt
directori.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Instal·leu/copieu certificats per a ús de producció al vostre servidor.
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
Ara que hem obtingut correctament els certificats de comodí de Let's Encrypt, hem de configurar el servidor web Nginx. Tots els certificats es renoven automàticament cada 60 dies.
Després d'obtenir i instal·lar certificats a la vostra ubicació preferida, podeu tancar la sessió de l' root
usuari a un sudo
usuari normal i continuar gestionant el vostre servidor utilitzant-lo sudo
si cal.
exit
Executeu sudo vim /etc/nginx/sites-available/example.com.conf
i ompliu el fitxer amb el contingut següent. Substitueix totes les ocurrències de example.com
pel teu propi nom de domini.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com *.example.com;
root /var/www/example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
}
Activeu la nova example.com.conf
configuració enllaçant el fitxer al sites-enabled
directori.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Prova la configuració de Nginx.
sudo nginx -t
Torna a carregar Nginx.
sudo systemctl reload nginx.service
Això és. Hem implementat certificats de comodí a Nginx, utilitzant acme.sh, Lexicon i l'API Vultr. Els certificats de comodí poden ser útils quan voleu assegurar diversos subdominis de primer nivell generats de manera dinàmica.