Požadavky
Než začnete
Nainstalujte Nginx
Nainstalujte Python a Lexicon
Nainstalujte klienta acme.sh
Získejte certifikáty se zástupnými znaky z Let's Encrypt
Nakonfigurujte webový server Nginx
V březnu 2018 přidala Let's Encrypt podporu pro certifikáty se zástupnými znaky. Zástupné certifikáty umožňují zabezpečit všechny subdomény první úrovně domény jediným certifikátem. Zástupné certifikáty lze získat pouze prostřednictvím ACMEv2, což je aktualizovaná verze protokolu ACME. Chcete-li použít ACMEv2 pro certifikáty se zástupnými znaky nebo bez zástupných znaků, budete potřebovat klienta, který byl aktualizován, aby podporoval ACMEv2. Jedním z takových klientů je acme.sh, což je klient protokolu ACME/ACMEv2 napsaný čistě v jazyce Shell (Unix shell) bez jakýchkoli závislostí. Kromě toho musí být domény se zástupnými znaky ověřeny pomocí typu výzvy DNS-01. To znamená, že musíte upravit záznamy DNS TXT, abyste prokázali kontrolu nad doménou, abyste získali certifikát se zástupnými znaky.
V této příručce vysvětlujeme, jak získat a nasadit bezplatné zástupné certifikáty z Let's Encrypt na Ubuntu 19.04 pomocí acme.sh
klienta, nástroje Lexicon pro automatickou manipulaci s DNS záznamy spotřebováním Vultr API a nasazením certifikátů na webový server Nginx.
Požadavky
- Čerstvě nasazený cloudový server Ubuntu 19.04 Vultr.
- Máte registrovaný název domény. Tato příručka slouží
example.com
jako příklad domény.
- Ujistěte se, že jste pro svůj plně kvalifikovaný název domény (FQDN) nastavili DNS záznamy A/AAAA a CNAME. Možná budete chtít konzultovat Úvod do Vultr DNS tutoriálu , pokud budete potřebovat, abyste se seznámili s pojmy DNS.
- Vultr API Přístup povolen v ovládacím panelu vašeho účtu Vultr.
Než začnete
Zkontrolujte verzi Ubuntu.
lsb_release -ds
# Ubuntu 19.04
Vytvořte si nový uživatelský účet s sudo
přístupem a preferovaným uživatelským jménem a přepněte na něj. používáme johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
POZNÁMKA : Nahraďte johndoe
svým uživatelským jménem.
Nastavte časové pásmo.
sudo dpkg-reconfigure tzdata
Ujistěte se, že váš systém Ubuntu je aktuální.
sudo apt update && sudo apt upgrade -y
Nainstalujte potřebné balíčky.
sudo apt install -y git wget curl socat
Nainstalujte Nginx
Nainstalujte webový server Nginx.
sudo apt install -y nginx
Zkontrolujte verzi.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Nainstalujte Python a Lexicon
Jako první krok v procesu získávání zástupných certifikátů z Let's Encrypt pomocí acme.sh a Vultr API je potřeba nainstalovat Python a Lexicon . Lexicon je balíček Pythonu, který poskytuje způsob, jak standardizovaným způsobem manipulovat se záznamy DNS u více poskytovatelů DNS.
Nainstalujte Python, pokud ještě není nainstalován ve vašem systému.
sudo apt install -y python3
Potvrďte instalaci ověřením verze.
python3 --version
# Python 3.7.3
Nainstalujte nástroj Lexicon. Lexikon je nástroj Pythonu, který vám umožňuje standardizovaným způsobem manipulovat se záznamy DNS u různých poskytovatelů DNS.
sudo apt install -y lexicon
Zkontrolujte verzi Lexicon.
lexicon --version
# lexicon 3.0.8
Nainstalujte acme.sh
klienta
Acme.sh
je klient protokolu ACME napsaný čistě v jazyce Shell (Unix shell), který automatizuje proces získání podepsaného certifikátu pomocí Let's Encrypt. Podporuje ACME v1 a ACME v2, a co je nejdůležitější, podporuje ACME v2 zástupné certifikáty. V této části nainstalujeme skript Acme.sh.
POZNÁMKA: K instalaci se doporučuje použít root
uživatele acme.sh
, ačkoli to nevyžaduje root
/ sudo
přístup.
Přepněte na root
uživatele z běžného uživatele, pokud jste jej vytvořili.
sudo su - root
Stáhněte a nainstalujte acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Zkontrolujte verzi.
acme.sh --version
# v2.8.2
Získejte certifikáty se zástupnými znaky z Let's Encrypt
K získání certifikátu zástupných znaků můžeme použít pouze metodu ověření DNS. K manipulaci s TXT DNS záznamy používáme Lexicon a Vultr DNS API.
Získejte pro svou doménu certifikáty RSA a ECC se zástupnými znaky.
# 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 : Nezapomeňte nahradit example.com
názvem vaší domény a nahraďte zástupné hodnoty rozhraní API Vultr svými vlastními.
Po spuštění předchozích příkazů jsou vaše certifikáty a klíče v:
- Pro RSA:
~/.acme.sh/example.com
adresář.
- Pro ECC/ECDSA:
~/.acme.sh/example.com_ecc
adresář.
POZNÁMKA : Soubory certifikátů ve ~/.acme.sh/
složce byste neměli používat , jsou pouze pro interní použití, struktura adresářů se může v budoucnu změnit.
Chcete-li vypsat své certifikáty, můžete spustit:
acme.sh --list
Vytvořte složku pro ukládání certifikátů v produkci. Používáme /etc/letsencrypt
adresář.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Nainstalujte/zkopírujte certifikáty pro produkční použití na vašem serveru.
# 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"
Nyní, když jsme úspěšně získali certifikáty zástupných znaků z Let's Encrypt, musíme nakonfigurovat webový server Nginx. Všechny certifikáty se automaticky obnovují každých 60 dní.
Po získání a instalaci certifikátů do preferovaného umístění se můžete odhlásit od root
uživatele k běžnému sudo
uživateli a v sudo
případě potřeby pokračovat ve správě serveru pomocí .
exit
Spusťte sudo vim /etc/nginx/sites-available/example.com.conf
a naplňte soubor následujícím obsahem. Nahraďte všechny výskyty řetězce example.com
svým vlastním názvem 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 novou example.com.conf
konfiguraci propojením souboru s sites-enabled
adresářem.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Otestujte konfiguraci Nginx.
sudo nginx -t
Znovu načtěte Nginx.
sudo systemctl reload nginx.service
A je to. Nasadili jsme zástupné certifikáty do Nginx pomocí acme.sh, Lexicon a Vultr API. Zástupné certifikáty mohou být užitečné, když chcete zabezpečit více dynamicky generovaných subdomén první úrovně.