Požiadavky
Predtým ako začneš
Nainštalujte Nginx
Nainštalujte Python a Lexicon
Nainštalujte klienta acme.sh
Získajte certifikáty zástupných znakov z Let's Encrypt
Nakonfigurujte webový server Nginx
V marci 2018 Let's Encrypt pridala podporu pre certifikáty so zástupnými znakmi. Zástupné certifikáty vám umožňujú zabezpečiť všetky subdomény prvej úrovne domény jediným certifikátom. Zástupné certifikáty je možné získať iba prostredníctvom ACMEv2, čo je aktualizovaná verzia protokolu ACME. Ak chcete použiť ACMEv2 pre certifikáty so zástupným znakom alebo bez neho, budete potrebovať klienta, ktorý bol aktualizovaný na podporu ACMEv2. Jedným z takýchto klientov je acme.sh, čo je klient protokolu ACME/ACMEv2 napísaný čisto v jazyku Shell (Unix shell) bez akýchkoľvek závislostí. Okrem toho musia byť domény so zástupnými znakmi overené pomocou typu výzvy DNS-01. To znamená, že musíte upraviť záznamy DNS TXT, aby ste preukázali kontrolu nad doménou, aby ste získali certifikát so zástupným znakom.
V tejto príručke vysvetľujeme, ako získať a nasadiť bezplatné zástupné certifikáty z Let's Encrypt na Ubuntu 19.04 pomocou acme.sh
klienta, nástroja Lexicon na automatickú manipuláciu so záznamami DNS spotrebovaním Vultr API a nasadením certifikátov na webový server Nginx.
Požiadavky
- Čerstvo nasadený cloudový server Ubuntu 19.04 Vultr.
- Máte zaregistrovaný názov domény. Táto príručka sa používa
example.com
ako príklad domény.
- Uistite sa, že ste pre svoj plne kvalifikovaný názov domény (FQDN) nastavili DNS záznamy A/AAAA a CNAME. Ak sa potrebujete zoznámiť s pojmami DNS, môžete si prečítať príručku Úvod do Vultr DNS .
- Prístup k API Vultr je povolený v ovládacom paneli vášho účtu Vultr.
Predtým ako začneš
Skontrolujte verziu Ubuntu.
lsb_release -ds
# Ubuntu 19.04
Vytvorte si nový používateľský účet s sudo
prístupom a preferovaným používateľským menom a prepnite sa naň. Používame johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
POZNÁMKA : Nahraďte johndoe
svojím užívateľským menom.
Nastavte časové pásmo.
sudo dpkg-reconfigure tzdata
Uistite sa, že váš systém Ubuntu je aktuálny.
sudo apt update && sudo apt upgrade -y
Nainštalujte potrebné balíčky.
sudo apt install -y git wget curl socat
Nainštalujte Nginx
Nainštalujte webový server Nginx.
sudo apt install -y nginx
Skontrolujte verziu.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Nainštalujte Python a Lexicon
Ako prvý krok v procese získavania certifikátov so zástupnými znakmi z Let's Encrypt pomocou acme.sh a Vultr API je potrebné nainštalovať Python a Lexicon . Lexicon je balík Python, ktorý poskytuje spôsob, ako štandardizovaným spôsobom manipulovať so záznamami DNS u viacerých poskytovateľov DNS.
Nainštalujte Python, ak ešte nie je nainštalovaný vo vašom systéme.
sudo apt install -y python3
Inštaláciu potvrďte overením verzie.
python3 --version
# Python 3.7.3
Nainštalujte nástroj Lexicon. Lexikón je nástroj Pythonu, ktorý vám umožňuje štandardizovaným spôsobom manipulovať so záznamami DNS u rôznych poskytovateľov DNS.
sudo apt install -y lexicon
Skontrolujte verziu Lexicon.
lexicon --version
# lexicon 3.0.8
Nainštalujte acme.sh
klienta
Acme.sh
je klient protokolu ACME napísaný čisto v jazyku Shell (Unix shell), ktorý automatizuje proces získania podpísaného certifikátu cez Let's Encrypt. Podporuje ACME v1 a ACME v2, a čo je najdôležitejšie, podporuje certifikáty ACME v2. V tejto časti nainštalujeme skript Acme.sh.
POZNÁMKA: Na root
inštaláciu sa odporúča použiť používateľa acme.sh
, hoci nevyžaduje root
/ sudo
prístup.
Prepnite na root
používateľa z bežného používateľa, ak ste ho vytvorili.
sudo su - root
Stiahnite si a nainštalujte acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Skontrolujte verziu.
acme.sh --version
# v2.8.2
Získajte certifikáty zástupných znakov z Let's Encrypt
Na získanie certifikátu zástupného znaku môžeme použiť iba metódu overenia DNS. Na manipuláciu so záznamami TXT DNS používame Lexicon a Vultr DNS API.
Získajte certifikáty RSA a ECC so zástupnými znakmi pre vašu doménu.
# 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
POZNÁMKA : Nezabudnite nahradiť example.com
názvom svojej domény a nahraďte zástupné hodnoty rozhrania API Vultr svojimi vlastnými.
Po spustení predchádzajúcich príkazov sú vaše certifikáty a kľúče v:
- Pre RSA:
~/.acme.sh/example.com
adresár.
- Pre ECC/ECDSA:
~/.acme.sh/example.com_ecc
adresár.
POZNÁMKA : Súbory certifikátov v ~/.acme.sh/
priečinku by ste nemali používať , sú len na interné použitie, štruktúra adresárov sa môže v budúcnosti zmeniť.
Ak chcete uviesť svoje certifikáty, môžete spustiť:
acme.sh --list
Vytvorte priečinok na ukladanie vašich certifikátov vo výrobe. Používame /etc/letsencrypt
adresár.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Nainštalujte/skopírujte certifikáty na produkčné použitie na vašom serveri.
# 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"
Teraz, keď sme úspešne získali certifikáty zástupných znakov z Let's Encrypt, musíme nakonfigurovať webový server Nginx. Všetky certifikáty sa automaticky obnovujú každých 60 dní.
Po získaní a inštalácii certifikátov na preferované miesto sa môžete odhlásiť od root
používateľa k bežnému sudo
používateľovi a v prípade potreby pokračovať v správe servera pomocou sudo
.
exit
Spustite sudo vim /etc/nginx/sites-available/example.com.conf
a naplňte súbor nasledujúcim obsahom. Nahraďte všetky výskyty example.com
domény vlastným názvom domény.
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;
}
Aktivujte novú example.com.conf
konfiguráciu prepojením súboru s sites-enabled
adresárom.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Otestujte konfiguráciu Nginx.
sudo nginx -t
Znova načítať Nginx.
sudo systemctl reload nginx.service
To je všetko. Nasadili sme zástupné certifikáty do Nginx pomocou acme.sh, Lexicon a Vultr API. Zástupné certifikáty môžu byť užitočné, keď chcete zabezpečiť viacero dynamicky generovaných subdomén prvej úrovne.