Követelmények
Mielőtt elkezded
Telepítse az Nginx-et
Telepítse a Pythont és a Lexicont
Telepítse az acme.sh klienst
Szerezzen helyettesítő karaktereket a Let's Encrypt szolgáltatásból
Konfigurálja az Nginx webszervert
2018 márciusában a Let's Encrypt hozzáadta a helyettesítő karakter tanúsítványok támogatását. A helyettesítő karaktertanúsítványok segítségével egyetlen tanúsítvánnyal biztosíthatja a domain összes első szintű aldomainjét. A helyettesítő karakter tanúsítványok csak az ACMEv2-n keresztül szerezhetők be, amely az ACME protokoll frissített változata. Az ACMEv2 helyettesítő karakteres vagy nem helyettesítő karakteres tanúsítványokhoz való használatához olyan kliensre lesz szüksége, amelyet frissítettek az ACMEv2 támogatására. Az egyik ilyen kliens az acme.sh, amely egy ACME/ACMEv2 protokoll kliens, amely tisztán Shell (Unix shell) nyelven íródott, függőségek nélkül. Ezenkívül a helyettesítő karakteres tartományokat a DNS-01 kihívástípussal kell érvényesíteni. Ez azt jelenti, hogy módosítania kell a DNS TXT rekordokat, hogy igazolja a tartomány feletti irányítást a helyettesítő karakter tanúsítvány megszerzéséhez.
Ebben az útmutatóban elmagyarázzuk, hogyan szerezhet be és helyezhet üzembe ingyenes helyettesítő karakteres tanúsítványokat a Let's Encrypt alkalmazásból az Ubuntu 19.04-en a DNS-rekordok Vultr API felhasználásával történő automatikus manipulálására szolgáló acme.sh
kliens, Lexicon eszköz segítségével, és telepítheti a tanúsítványokat az Nginx webszerverre.
Követelmények
- Frissen telepített Ubuntu 19.04 Vultr felhőkiszolgáló.
- Regisztrált domain neved van. Ez az útmutató
example.com
példaként használható tartományra.
- Győződjön meg arról, hogy beállított A/AAAA és CNAME DNS rekordokat a Fully Qualified Domain Name (FQDN) számára. Ha meg kell ismerkednie a DNS-fogalmakkal , olvassa el a Bevezetés a Vultr DNS-be oktatóanyagot .
- A Vultr API-hozzáférés engedélyezve van a Vultr-fiók vezérlőpultján.
Mielőtt elkezded
Ellenőrizze az Ubuntu verziót.
lsb_release -ds
# Ubuntu 19.04
Hozzon létre egy új felhasználói fiókot sudo
hozzáféréssel és preferált felhasználónévvel, és váltson rá. használjuk johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
MEGJEGYZÉS : Cserélje johndoe
ki a felhasználónevét.
Állítsa be az időzónát.
sudo dpkg-reconfigure tzdata
Győződjön meg arról, hogy Ubuntu rendszere naprakész.
sudo apt update && sudo apt upgrade -y
Telepítse a szükséges csomagokat.
sudo apt install -y git wget curl socat
Telepítse az Nginx-et
Telepítse az Nginx webszervert.
sudo apt install -y nginx
Ellenőrizze a verziót.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Telepítse a Pythont és a Lexicont
A Let's Encrypt által az acme.sh és a Vultr API használatával végzett helyettesítő karaktertanúsítványok beszerzésének első lépéseként telepítenie kell a Python és a Lexicon alkalmazást . A Lexicon egy Python-csomag, amely lehetővé teszi több DNS-szolgáltató DNS-rekordjainak szabványosított kezelését.
Telepítse a Python-t, ha még nincs telepítve a rendszerére.
sudo apt install -y python3
Erősítse meg a telepítést a verzió ellenőrzésével.
python3 --version
# Python 3.7.3
Telepítse a Lexicon eszközt. A lexikon egy Python-eszköz, amely lehetővé teszi a különböző DNS-szolgáltatók DNS-rekordjainak szabványosított kezelését.
sudo apt install -y lexicon
Ellenőrizze a Lexicon verzióját.
lexicon --version
# lexicon 3.0.8
acme.sh
Kliens telepítése
Acme.sh
egy tisztán Shell (Unix shell) nyelven írt ACME protokoll kliens, amely automatizálja az aláírt tanúsítványok beszerzését a Let's Encrypt segítségével. Támogatja az ACME v1 és ACME v2, és ami a legfontosabb, támogatja az ACME v2 helyettesítő karakteres tanúsítványokat. Ebben a részben egy Acme.sh szkriptet telepítünk.
MEGJEGYZÉS: Javasoljuk, hogy a root
felhasználót használja a telepítéshez acme.sh
, bár nem igényel root
/ sudo
hozzáférést.
Váltson root
felhasználóra a normál felhasználóról, ha létrehozta.
sudo su - root
Töltse le és telepítse acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Ellenőrizze a verziót.
acme.sh --version
# v2.8.2
Szerezzen helyettesítő karaktereket a Let's Encrypt szolgáltatásból
A helyettesítő karakter tanúsítvány megszerzéséhez csak a DNS-ellenőrzési módszert használhatjuk. A TXT DNS-rekordok kezeléséhez a Lexicont és a Vultr DNS API-t használjuk.
Szerezzen RSA és ECC helyettesítő karakteres tanúsítványokat a domainjéhez.
# 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
MEGJEGYZÉS : Ne felejtse el lecserélni example.com
a domain nevét, és cserélje ki a Vultr API helyőrző értékeit a sajátjára.
Az előző parancsok futtatása után a tanúsítványok és kulcsok a következőkben vannak:
- RSA esetén:
~/.acme.sh/example.com
könyvtár.
- ECC/ECDSA esetén:
~/.acme.sh/example.com_ecc
könyvtár.
MEGJEGYZÉS : A cert fájlokat ne használja a ~/.acme.sh/
mappában, csak belső használatra szolgálnak, a könyvtárszerkezet a jövőben változhat.
A tanúsítványok listázásához futtassa a következőket:
acme.sh --list
Hozzon létre egy mappát a tanúsítványok éles tárolására. /etc/letsencrypt
Könyvtárat használunk .
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Tanúsítványok telepítése/másolása termelési használatra a szerveren.
# 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"
Most, hogy sikeresen megszereztük a helyettesítő karakteres tanúsítványokat a Let's Encrypt-től, konfigurálnunk kell az Nginx webszervert. Az összes tanúsítvány 60 naponként automatikusan megújul.
Miután megszerezte és telepítette a tanúsítványokat az Ön által előnyben részesített helyre, kijelentkezhet a root
felhasználóról egy normál sudo
felhasználóra, és szükség esetén tovább kezelheti szerverét a használatával sudo
.
exit
Futtassa sudo vim /etc/nginx/sites-available/example.com.conf
és töltse fel a fájlt a következő tartalommal. Cserélje le az összes előfordulását example.com
saját domain nevével.
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;
}
Aktiválja az új example.com.conf
konfigurációt a fájlnak a sites-enabled
könyvtárhoz való csatolásával .
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Tesztelje az Nginx konfigurációját.
sudo nginx -t
Töltse újra az Nginxet.
sudo systemctl reload nginx.service
Ez az. Helyettesítő karakteres tanúsítványokat helyeztünk üzembe az Nginxben az acme.sh, a Lexicon és a Vultr API használatával. A helyettesítő karakteres tanúsítványok hasznosak lehetnek, ha több, dinamikusan generált első szintű aldomaint szeretne biztosítani.