Zahtjevi
Prije nego što počneš
Instalirajte Nginx
Instalirajte Python i Lexicon
Instalirajte acme.sh klijent
Nabavite zamjenske certifikate od Let's Encrypt
Konfigurirajte Nginx web poslužitelj
U ožujku 2018. Let's Encrypt je dodao podršku za zamjenske certifikate. Zamjenski certifikati omogućuju vam da osigurate sve poddomene prve razine domene s jednim certifikatom. Zamjenski certifikati dostupni su samo putem ACMEv2, koji je ažurirana verzija ACME protokola. Da biste koristili ACMEv2 za zamjenske ili ne-zamjenske certifikate, trebat će vam klijent koji je ažuriran da podržava ACMEv2. Jedan takav klijent je acme.sh, koji je klijent ACME/ACMEv2 protokola napisan isključivo u Shell (Unix shell) jeziku bez ikakvih ovisnosti. Nadalje, zamjenske domene moraju biti potvrđene korištenjem DNS-01 tipa izazova. To implicira da trebate izmijeniti DNS TXT zapise kako biste dokazali kontrolu nad domenom kako biste dobili zamjenski certifikat.
U ovom vodiču objašnjavamo kako dobiti i implementirati besplatne zamjenske certifikate iz Let's Encrypt na Ubuntu 19.04 pomoću acme.sh
klijenta, alata Lexicon za automatsku manipulaciju DNS zapisima korištenjem Vultr API-ja i implementacije certifikata na Nginx web poslužitelj.
Zahtjevi
- Svježe raspoređeni Ubuntu 19.04 Vultr poslužitelj u oblaku.
- Imate registrirano ime domene. Ovaj vodič koristi se
example.com
kao primjer domene.
- Provjerite jeste li postavili A/AAAA i CNAME DNS zapise za svoj potpuno kvalificirani naziv domene (FQDN). Možda ćete htjeti pogledati vodič Uvod u Vultr DNS ako se trebate upoznati s DNS konceptima.
- Vultr API pristup omogućen na kontrolnoj ploči vašeg Vultr računa.
Prije nego što počneš
Provjerite verziju Ubuntua.
lsb_release -ds
# Ubuntu 19.04
Stvorite novi korisnički račun s sudo
pristupom i željenim korisničkim imenom i prebacite se na njega. Koristimo johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NAPOMENA : Zamijenite johndoe
svojim korisničkim imenom.
Postavite vremensku zonu.
sudo dpkg-reconfigure tzdata
Provjerite je li vaš Ubuntu sustav ažuriran.
sudo apt update && sudo apt upgrade -y
Instalirajte potrebne pakete.
sudo apt install -y git wget curl socat
Instalirajte Nginx
Instalirajte Nginx web poslužitelj.
sudo apt install -y nginx
Provjerite verziju.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Instalirajte Python i Lexicon
Kao prvi korak u procesu dobivanja zamjenskih certifikata od Let's Encrypt pomoću acme.sh i Vultr API-ja, trebate instalirati Python i Lexicon . Lexicon je Python paket koji pruža način za manipuliranje DNS zapisima na više DNS pružatelja usluga na standardiziran način.
Instalirajte Python ako već nije instaliran na vašem sustavu.
sudo apt install -y python3
Potvrdite instalaciju provjerom verzije.
python3 --version
# Python 3.7.3
Instalirajte alat Lexicon. Leksikon je Python alat koji vam omogućuje da manipulirate DNS zapisima na različitim DNS davateljima na standardiziran način.
sudo apt install -y lexicon
Provjerite verziju Lexicona.
lexicon --version
# lexicon 3.0.8
Instaliraj acme.sh
klijenta
Acme.sh
je klijent ACME protokola napisan isključivo u Shell (Unix shell) jeziku koji automatizira proces dobivanja potpisanog certifikata putem Let's Encrypt. Podržava ACME v1 i ACME v2, a što je najvažnije podržava ACME v2 zamjenske certifikate. U ovom odjeljku instaliramo Acme.sh skriptu.
NAPOMENA: Preporuča se korištenje root
korisnika za instalaciju acme.sh
, iako ne zahtijeva root
/ sudo
pristup.
Prijeđite na root
korisnika s običnog korisnika ako ste ga stvorili.
sudo su - root
Preuzmite i instalirajte acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Provjerite verziju.
acme.sh --version
# v2.8.2
Nabavite zamjenske certifikate od Let's Encrypt
Za dobivanje zamjenskog certifikata možemo koristiti samo metodu provjere DNS-a. Koristimo Lexicon i Vultr DNS API za manipulaciju TXT DNS zapisima.
Nabavite RSA i ECC zamjenske certifikate za svoju domenu.
# 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
NAPOMENA : Nemojte zaboraviti zamijeniti example.com
imenom svoje domene i zamijenite Vultr API vrijednosti rezerviranog mjesta svojim vlastitim.
Nakon izvođenja prethodnih naredbi, vaši certifikati i ključevi su u:
- Za RSA:
~/.acme.sh/example.com
imenik.
- Za ECC/ECDSA:
~/.acme.sh/example.com_ecc
imenik.
NAPOMENA : Ne biste trebali koristiti datoteke certifikata u ~/.acme.sh/
mapi, one su samo za internu upotrebu, struktura direktorija se može promijeniti u budućnosti.
Da biste naveli svoje certifikate, možete pokrenuti:
acme.sh --list
Izradite mapu za pohranu vaših certifikata u proizvodnji. Koristimo /etc/letsencrypt
imenik.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Instalirajte/kopirajte certifikate za proizvodnu upotrebu na vašem poslužitelju.
# 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"
Sada kada smo uspješno dobili zamjenske certifikate od Let's Encrypta, moramo konfigurirati Nginx web poslužitelj. Svi certifikati se automatski obnavljaju svakih 60 dana.
Nakon dobivanja i instaliranja certifikata na željenu lokaciju, možete se odjaviti s root
korisnika na običnog sudo
korisnika i nastaviti upravljati svojim poslužiteljem korištenjem sudo
ako je potrebno.
exit
Pokrenite sudo vim /etc/nginx/sites-available/example.com.conf
i popunite datoteku sljedećim sadržajem. Zamijenite sva pojavljivanja example.com
s vlastitim 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 novu example.com.conf
konfiguraciju povezivanjem datoteke s sites-enabled
direktorijem.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Testirajte konfiguraciju Nginxa.
sudo nginx -t
Ponovno učitajte Nginx.
sudo systemctl reload nginx.service
To je to. U Nginx smo implementirali zamjenske certifikate koristeći acme.sh, Lexicon i Vultr API. Zamjenski certifikati mogu biti korisni kada želite osigurati više poddomena prve razine generiranih dinamički.