Krav
Før du begynner
Installer Nginx
Installer Python og Lexicon
Installer acme.sh-klienten
Skaff jokertegnsertifikater fra Let's Encrypt
Konfigurer Nginx webserver
I mars 2018 la Let's Encrypt til støtte for jokertegnsertifikater. Jokertegnsertifikater lar deg sikre alle underdomener på første nivå av et domene med ett enkelt sertifikat. Wildcard-sertifikater er kun tilgjengelig gjennom ACMEv2, som er en oppdatert versjon av ACME-protokollen. For å bruke ACMEv2 for jokertegn eller ikke-jokertegnsertifikater, trenger du en klient som har blitt oppdatert for å støtte ACMEv2. En slik klient er acme.sh, som er en ACME/ACMEv2-protokollklient skrevet utelukkende på Shell (Unix shell) språk uten noen avhengigheter. Videre må jokertegndomener valideres ved hjelp av DNS-01-utfordringstypen. Det betyr at du må endre DNS TXT-poster for å bevise kontroll over et domene for å få et jokertegnsertifikat.
I denne veiledningen forklarer vi hvordan du skaffer og distribuerer gratis jokertegnsertifikater fra Let's Encrypt på Ubuntu 19.04 ved å bruke acme.sh
klient, Lexicon- verktøy for automatisk manipulering av DNS-poster ved å konsumere Vultr API og distribuere sertifikater til Nginx-nettserveren.
Krav
- Nylig distribuert Ubuntu 19.04 Vultr skyserver.
- Du har et registrert domenenavn. Denne veiledningen bruker
example.com
som eksempeldomene.
- Sørg for at du har satt A/AAAA og CNAME DNS-poster for ditt Fully Qualified Domain Name (FQDN). Det kan være lurt å se Introduksjon til Vultr DNS-veiledningen hvis du trenger å gjøre deg kjent med DNS-konsepter.
- Vultr API-tilgang aktivert i Vultr-kontokontrollpanelet.
Før du begynner
Sjekk Ubuntu-versjonen.
lsb_release -ds
# Ubuntu 19.04
Opprett en ny brukerkonto med sudo
tilgang og ditt foretrukne brukernavn og bytt til det. Vi bruker johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
MERK : Erstatt johndoe
med brukernavnet ditt.
Sett opp tidssonen.
sudo dpkg-reconfigure tzdata
Sørg for at Ubuntu-systemet ditt er oppdatert.
sudo apt update && sudo apt upgrade -y
Installer de nødvendige pakkene.
sudo apt install -y git wget curl socat
Installer Nginx
Installer Nginx-nettserveren.
sudo apt install -y nginx
Sjekk versjonen.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Installer Python og Lexicon
Som et første trinn i prosessen med å skaffe jokertegnsertifikater fra Let's Encrypt ved å bruke acme.sh og Vultr API, må du installere Python og Lexicon . Lexicon er en Python-pakke som gir en måte å manipulere DNS-poster på flere DNS-leverandører på en standardisert måte.
Installer Python hvis det ikke allerede er installert på systemet ditt.
sudo apt install -y python3
Bekreft installasjonen ved å bekrefte versjonen.
python3 --version
# Python 3.7.3
Installer Lexicon-verktøyet. Et leksikon er et Python-verktøy som lar deg manipulere DNS-poster på forskjellige DNS-leverandører på en standardisert måte.
sudo apt install -y lexicon
Sjekk Lexicon-versjonen.
lexicon --version
# lexicon 3.0.8
Installer acme.sh
klient
Acme.sh
er en ACME-protokollklient skrevet utelukkende i Shell (Unix shell) språk som automatiserer prosessen med å få et signert sertifikat via Let's Encrypt. Den støtter ACME v1 og ACME v2, og viktigst av alt støtter den ACME v2 jokertegnsertifikater. I denne delen installerer vi et Acme.sh-skript.
MERK: Det anbefales å bruke root
brukeren til å installere acme.sh
, selv om det ikke krever root
/ sudo
tilgang.
Bytt til root
bruker fra den vanlige brukeren hvis du har opprettet den.
sudo su - root
Last ned og installer acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Sjekk versjonen.
acme.sh --version
# v2.8.2
Skaff jokertegnsertifikater fra Let's Encrypt
For å få et jokertegnssertifikat kan vi bare bruke DNS-valideringsmetoden. Vi bruker Lexicon og Vultr DNS API for å manipulere TXT DNS-poster.
Skaff RSA- og ECC-jokertegnsertifikater for domenet ditt.
# 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
MERK : Ikke glem å erstatte example.com
med domenenavnet ditt, og erstatte Vultr API-plassholderverdiene med dine egne.
Etter å ha kjørt de foregående kommandoene, er sertifikatene og nøklene dine i:
- For RSA:
~/.acme.sh/example.com
katalog.
- For ECC/ECDSA:
~/.acme.sh/example.com_ecc
katalog.
MERK : Du bør ikke bruke cert-filene i ~/.acme.sh/
mappen, de er kun for intern bruk, katalogstrukturen kan endres i fremtiden.
For å liste opp sertifikatene dine kan du kjøre:
acme.sh --list
Opprett en mappe for å lagre sertifikatene dine i produksjon. Vi bruker /etc/letsencrypt
katalog.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Installer/kopier sertifikater for produksjonsbruk på serveren din.
# 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"
Nå som vi har oppnådd jokertegnsertifikater fra Let's Encrypt, må vi konfigurere Nginx-nettserveren. Alle sertifikatene fornyes automatisk hver 60. dag.
Etter å ha oppnådd og installert sertifikater til din foretrukne plassering, kan du logge ut fra root
bruker til en vanlig sudo
bruker og fortsette å administrere serveren din ved å bruke sudo
om nødvendig.
exit
Kjør sudo vim /etc/nginx/sites-available/example.com.conf
og fyll filen med følgende innhold. Erstatt alle forekomster av example.com
med ditt eget domenenavn.
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;
}
Aktiver den nye example.com.conf
konfigurasjonen ved å koble filen til sites-enabled
katalogen.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Test Nginx-konfigurasjonen.
sudo nginx -t
Last inn Nginx på nytt.
sudo systemctl reload nginx.service
Det er det. Vi distribuerte jokertegnssertifikater til Nginx ved å bruke acme.sh, Lexicon og Vultr API. Wildcard-sertifikater kan være nyttige når du ønsker å sikre flere underdomener på første nivå generert dynamisk.