Zahteve
Preden začneš
Namestite Nginx
Namestite Python in Lexicon
Namestite odjemalca acme.sh
Pridobite nadomestne certifikate iz Let's Encrypt
Konfigurirajte spletni strežnik Nginx
Marca 2018 je Let's Encrypt dodal podporo za nadomestna potrdila. Potrdila z nadomestnimi znaki vam omogočajo, da z enim potrdilom zaščitite vse poddomene prve stopnje v domeni. Potrdila z nadomestnimi znaki je mogoče pridobiti samo prek ACMEv2, ki je posodobljena različica protokola ACME. Če želite uporabiti ACMEv2 za nadomestna potrdila ali potrdila brez nadomestnih znakov, boste potrebovali odjemalca, ki je bil posodobljen za podporo ACMEv2. Eden takšnih odjemalcev je acme.sh, ki je odjemalec protokola ACME/ACMEv2, napisan izključno v jeziku Shell (lupina Unix), brez kakršnih koli odvisnosti. Poleg tega je treba domene nadomestnih znakov potrditi z uporabo vrste izziva DNS-01. To pomeni, da morate spremeniti zapise DNS TXT, da dokažete nadzor nad domeno, da pridobite potrdilo z nadomestnimi znaki.
V tem priročniku razlagamo, kako pridobiti in uvesti brezplačne nadomestne certifikate iz Let's Encrypt v Ubuntu 19.04 z uporabo acme.sh
odjemalca, orodja Lexicon za samodejno manipulacijo zapisov DNS z uporabo Vultr API-ja in uvedbo potrdil na spletni strežnik Nginx.
Zahteve
- Sveže nameščen strežnik v oblaku Ubuntu 19.04 Vultr.
- Imate registrirano ime domene. Ta priročnik uporablja
example.com
kot primer domene.
- Prepričajte se, da ste nastavili zapisa DNS A/AAAA in CNAME za vaše popolnoma kvalificirano ime domene (FQDN). Morda boste želeli prebrati vadnico Uvod v Vultr DNS, če se želite seznaniti s koncepti DNS.
- Vultr API Dostop je omogočen na nadzorni plošči vašega računa Vultr.
Preden začneš
Preverite različico Ubuntuja.
lsb_release -ds
# Ubuntu 19.04
Ustvarite nov uporabniški račun z sudo
dostopom in želenim uporabniškim imenom ter preklopite nanj. Uporabljamo johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
OPOMBA : Zamenjajte johndoe
s svojim uporabniškim imenom.
Nastavite časovni pas.
sudo dpkg-reconfigure tzdata
Prepričajte se, da je vaš sistem Ubuntu posodobljen.
sudo apt update && sudo apt upgrade -y
Namestite potrebne pakete.
sudo apt install -y git wget curl socat
Namestite Nginx
Namestite spletni strežnik Nginx.
sudo apt install -y nginx
Preverite različico.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Namestite Python in Lexicon
Kot prvi korak v postopku pridobivanja nadomestnih potrdil iz Let's Encrypt z uporabo acme.sh in Vultr API-ja morate namestiti Python in Lexicon . Lexicon je paket Python, ki omogoča način za standardizirano manipulacijo zapisov DNS pri več ponudnikih DNS.
Namestite Python, če še ni nameščen v vašem sistemu.
sudo apt install -y python3
Potrdite namestitev s preverjanjem različice.
python3 --version
# Python 3.7.3
Namestite orodje Lexicon. Leksikon je orodje Python, ki vam omogoča, da na standardiziran način manipulirate z zapisi DNS pri različnih ponudnikih DNS.
sudo apt install -y lexicon
Preverite različico Lexicona.
lexicon --version
# lexicon 3.0.8
Namestite acme.sh
odjemalca
Acme.sh
je odjemalec protokola ACME, napisan izključno v jeziku Shell (Unix shell), ki avtomatizira postopek pridobivanja podpisanega potrdila prek Let's Encrypt. Podpira ACME v1 in ACME v2, in kar je najpomembneje, podpira nadomestne certifikate ACME v2. V tem razdelku namestimo skript Acme.sh.
OPOMBA: Priporočljivo je, da root
za namestitev uporabite uporabnika acme.sh
, čeprav ne zahteva root
/ sudo
dostopa.
Preklopite na root
uporabnika z običajnega uporabnika, če ste ga ustvarili.
sudo su - root
Prenesite in namestite acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Preverite različico.
acme.sh --version
# v2.8.2
Pridobite nadomestne certifikate iz Let's Encrypt
Za pridobitev potrdila z nadomestnimi znaki lahko uporabimo samo metodo preverjanja DNS. Za manipulacijo zapisov DNS TXT uporabljamo Lexicon in Vultr DNS API.
Pridobite RSA in ECC nadomestna potrdila za svojo domeno.
# 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
OPOMBA : Ne pozabite zamenjati example.com
z imenom vaše domene in zamenjajte vrednosti nadomestnega mesta Vultr API s svojimi.
Po zagonu prejšnjih ukazov so vaši certifikati in ključi v:
- Za RSA:
~/.acme.sh/example.com
imenik.
- Za ECC/ECDSA:
~/.acme.sh/example.com_ecc
imenik.
OPOMBA : Datotek cert ne smete uporabljati v ~/.acme.sh/
mapi, so samo za interno uporabo, struktura imenika se lahko v prihodnosti spremeni.
Če želite prikazati svoje certifikate, lahko zaženete:
acme.sh --list
Ustvarite mapo za shranjevanje vaših certifikatov v produkciji. Uporabljamo /etc/letsencrypt
imenik.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Namestite/kopirajte potrdila za produkcijsko uporabo na vašem strežniku.
# 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"
Zdaj, ko smo od Let's Encrypt uspešno pridobili nadomestne certifikate, moramo konfigurirati spletni strežnik Nginx. Vsi certifikati se samodejno obnavljajo vsakih 60 dni.
Po pridobitvi in namestitvi potrdil na želeno lokacijo se lahko odjavite od root
uporabnika do običajnega sudo
uporabnika in po potrebi nadaljujete z upravljanjem strežnika sudo
.
exit
Zaženite sudo vim /etc/nginx/sites-available/example.com.conf
in napolnite datoteko z naslednjo vsebino. Zamenjajte vse pojavnosti example.com
z lastnim imenom domene.
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;
}
Aktivirajte novo example.com.conf
konfiguracijo tako, da datoteko povežete z sites-enabled
imenikom.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Preizkusite konfiguracijo Nginx.
sudo nginx -t
Ponovno naložite Nginx.
sudo systemctl reload nginx.service
To je to. Nadomestne certifikate smo namestili v Nginx z uporabo acme.sh, Lexicon in Vultr API. Nadomestni certifikati so lahko uporabni, če želite zavarovati več poddomen prve stopnje, ustvarjenih dinamično.