Reikalavimai
Prieš tau pradedant
Įdiekite „Nginx“.
Įdiekite Python ir Lexicon
Įdiekite acme.sh klientą
Gaukite pakaitos simbolių sertifikatus iš Let's Encrypt
Sukonfigūruokite „Nginx“ žiniatinklio serverį
2018 m. kovo mėn. „Let's Encrypt“ pridėjo pakaitos simbolių sertifikatų palaikymą. Pakaitos simbolių sertifikatai leidžia apsaugoti visus domeno pirmojo lygio padomenius vienu sertifikatu. Pakaitos simbolių sertifikatus galima gauti tik naudojant ACMEv2, kuris yra atnaujinta ACME protokolo versija. Norėdami naudoti ACMEv2 pakaitos simbolio arba ne pakaitos simbolio sertifikatams, jums reikės kliento, kuris buvo atnaujintas, kad palaikytų ACMEv2. Vienas iš tokių klientų yra acme.sh, kuris yra ACME/ACMEv2 protokolo klientas, parašytas tik Shell (Unix shell) kalba be jokių priklausomybių. Be to, pakaitos simbolių domenai turi būti patvirtinti naudojant DNS-01 iššūkio tipą. Tai reiškia, kad turite modifikuoti DNS TXT įrašus, kad patvirtintumėte domeno valdymą ir gautumėte pakaitos simbolio sertifikatą.
Šiame vadove paaiškiname, kaip gauti ir įdiegti nemokamus pakaitos simbolius iš Let's Encrypt Ubuntu 19.04 naudojant acme.sh
kliento įrankį Lexicon, skirtą automatiškai manipuliuoti DNS įrašais naudojant Vultr API, ir įdiegti sertifikatus Nginx žiniatinklio serveryje.
Reikalavimai
- Naujai įdiegtas Ubuntu 19.04 Vultr debesies serveris.
- Turite registruotą domeno vardą. Šiame vadove naudojamas
example.com
kaip domeno pavyzdys.
- Įsitikinkite, kad nustatėte A/AAAA ir CNAME DNS įrašus savo visiškai kvalifikuotam domeno vardui (FQDN). Jei norite susipažinti su DNS sąvokomis, galbūt norėsite perskaityti Vultr DNS įvado vadovėlį .
- „Vultr“ API prieiga įjungta jūsų „Vultr“ paskyros valdymo skydelyje.
Prieš tau pradedant
Patikrinkite Ubuntu versiją.
lsb_release -ds
# Ubuntu 19.04
Sukurkite naują vartotojo abonementą su sudo
prieiga ir pageidaujamu vartotojo vardu ir perjunkite į jį. Mes naudojame johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
PASTABA : pakeiskite johndoe
savo vartotojo vardu.
Nustatykite laiko juostą.
sudo dpkg-reconfigure tzdata
Įsitikinkite, kad jūsų Ubuntu sistema yra atnaujinta.
sudo apt update && sudo apt upgrade -y
Įdiekite reikiamus paketus.
sudo apt install -y git wget curl socat
Įdiekite „Nginx“.
Įdiekite „Nginx“ žiniatinklio serverį.
sudo apt install -y nginx
Patikrinkite versiją.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Įdiekite Python ir Lexicon
Norėdami gauti pakaitos simbolių sertifikatus iš Let's Encrypt naudojant acme.sh ir Vultr API, pirmiausia turite įdiegti Python ir Lexicon . „Lexicon“ yra „Python“ paketas, suteikiantis būdą, kaip standartizuotai valdyti DNS įrašus keliuose DNS teikėjuose.
Įdiekite Python, jei dar neįdiegtas jūsų sistemoje.
sudo apt install -y python3
Patvirtinkite diegimą patikrindami versiją.
python3 --version
# Python 3.7.3
Įdiekite įrankį Lexicon. Leksikonas yra „Python“ įrankis, leidžiantis standartizuotai valdyti įvairių DNS teikėjų DNS įrašus.
sudo apt install -y lexicon
Patikrinkite Lexicon versiją.
lexicon --version
# lexicon 3.0.8
Įdiegti acme.sh
klientą
Acme.sh
yra ACME protokolo klientas, parašytas tik Shell (Unix shell) kalba, kuris automatizuoja pasirašyto sertifikato gavimo procesą naudojant Let's Encrypt. Jis palaiko ACME v1 ir ACME v2, o svarbiausia – palaiko ACME v2 pakaitos simbolius. Šiame skyriuje įdiegiame Acme.sh scenarijų.
PASTABA: Diegti rekomenduojama naudoti root
vartotoją acme.sh
, nors tam nereikia root
/ sudo
prieigos.
Perjunkite į root
vartotoją iš įprasto vartotojo, jei jį sukūrėte.
sudo su - root
Atsisiųskite ir įdiekite acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Patikrinkite versiją.
acme.sh --version
# v2.8.2
Gaukite pakaitos simbolių sertifikatus iš Let's Encrypt
Norėdami gauti pakaitos simbolio sertifikatą, galime naudoti tik DNS patvirtinimo metodą. TXT DNS įrašams valdyti naudojame Lexicon ir Vultr DNS API.
Gaukite savo domeno RSA ir ECC pakaitos simbolių sertifikatus.
# 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
PASTABA : nepamirškite pakeisti example.com
savo domeno pavadinimu ir pakeisti Vultr API rezervuotos vietos reikšmes savomis.
Paleidus ankstesnes komandas, jūsų sertifikatai ir raktai yra:
- RSA:
~/.acme.sh/example.com
katalogas.
- ECC/ECDSA:
~/.acme.sh/example.com_ecc
katalogas.
PASTABA : neturėtumėte naudoti sertifikatų failų ~/.acme.sh/
aplanke, jie skirti tik vidiniam naudojimui, ateityje gali pasikeisti katalogo struktūra.
Norėdami įtraukti sertifikatus, galite paleisti:
acme.sh --list
Sukurkite aplanką savo sertifikatams saugoti gamyboje. Mes naudojame /etc/letsencrypt
katalogą.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Įdiekite / nukopijuokite sertifikatus gamybiniam naudojimui savo serveryje.
# 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"
Dabar, kai sėkmingai gavome pakaitos simbolius iš „Let's Encrypt“, turime sukonfigūruoti „Nginx“ žiniatinklio serverį. Visi sertifikatai automatiškai atnaujinami kas 60 dienų.
Gavę ir įdiegę sertifikatus pageidaujamoje vietoje, galite atsijungti nuo root
vartotojo prie įprasto sudo
vartotojo ir toliau tvarkyti serverį naudodami, sudo
jei reikia.
exit
Paleiskite sudo vim /etc/nginx/sites-available/example.com.conf
ir užpildykite failą tokiu turiniu. Pakeiskite visus atvejus example.com
savo domeno vardu.
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;
}
Suaktyvinkite naują example.com.conf
konfigūraciją susiedami failą su sites-enabled
katalogu.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Išbandykite „Nginx“ konfigūraciją.
sudo nginx -t
Iš naujo įkelti Nginx.
sudo systemctl reload nginx.service
Viskas. Nginx įdiegėme pakaitos simbolių sertifikatus, naudodami acme.sh, Lexicon ir Vultr API. Pakaitos simbolių sertifikatai gali būti naudingi, kai norite apsaugoti kelis dinamiškai sugeneruotus pirmojo lygio padomenius.