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.shklienta, 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.comjako 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 sudopří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 johndoesvý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.shklienta
Acme.shje 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 rootuživatele acme.sh, ačkoli to nevyžaduje root/ sudopřístup.
Přepněte na rootuž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.comná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.comadresář.
- Pro ECC/ECDSA:
~/.acme.sh/example.com_eccadresář.
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/letsencryptadresář.
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 rootuživatele k běžnému sudouživateli a v sudopřípadě potřeby pokračovat ve správě serveru pomocí .
exit
Spusťte sudo vim /etc/nginx/sites-available/example.com.confa naplňte soubor následujícím obsahem. Nahraďte všechny výskyty řetězce example.comsvý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.confkonfiguraci propojením souboru s sites-enabledadresář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ě.