Kërkesat
Perpara se te fillosh
Instaloni Nginx
Instaloni Python dhe Lexicon
Instaloni klientin acme.sh
Merrni çertifikatat e shkronjave të egra nga Let's Encrypt
Konfiguro serverin në internet Nginx
Në mars 2018, Let's Encrypt shtoi mbështetje për certifikatat e karaktereve të egra. Certifikatat Wildcard ju lejojnë të siguroni të gjitha nënfushat e nivelit të parë të një domeni me një certifikatë të vetme. Certifikatat Wildcard mund të merren vetëm përmes ACMEv2, i cili është një version i përditësuar i protokollit ACME. Për të përdorur ACMEv2 për një çertifikatë me shkronja të ngurta ose jo, do t'ju duhet një klient që është përditësuar për të mbështetur ACMEv2. Një klient i tillë është acme.sh, i cili është një klient i protokollit ACME/ACMEv2 i shkruar thjesht në gjuhën Shell (Unix shell) pa asnjë varësi. Për më tepër, domenet e karaktereve të egra duhet të vërtetohen duke përdorur llojin e sfidës DNS-01. Kjo nënkupton që ju duhet të modifikoni të dhënat DNS TXT për të provuar kontrollin mbi një domen për të marrë një certifikatë të shkronjave të egra.
Në këtë udhëzues, ne shpjegojmë se si të merrni dhe vendosim çertifikata falas të shkronjave të egra nga Let's Encrypt në Ubuntu 19.04 duke përdorur acme.sh
klientin, mjetin Lexicon për manipulimin automatik të të dhënave DNS duke konsumuar Vultr API dhe vendosjen e certifikatave në serverin e internetit Nginx.
Kërkesat
- Serveri cloud i Ubuntu 19.04 Vultr i sapo vendosur.
- Ju keni një emër domaini të regjistruar. Ky udhëzues përdoret
example.com
si një domen shembull.
- Sigurohuni që të keni vendosur rekorde DNS A/AAAA dhe CNAME për Emrin tuaj të Domainit plotësisht të kualifikuar (FQDN). Ju mund të dëshironi të konsultoheni me tutorialin Hyrje në Vultr DNS nëse keni nevojë të njiheni me konceptet e DNS.
- Qasja në Vultr API është aktivizuar në panelin e kontrollit të llogarisë suaj Vultr.
Perpara se te fillosh
Kontrolloni versionin e Ubuntu.
lsb_release -ds
# Ubuntu 19.04
Krijoni një llogari të re përdoruesi me sudo
akses dhe emrin tuaj të preferuar të përdoruesit dhe kaloni në të. Ne përdorim johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
SHËNIM : Zëvendësojeni johndoe
me emrin tuaj të përdoruesit.
Vendosni zonën kohore.
sudo dpkg-reconfigure tzdata
Sigurohuni që sistemi juaj Ubuntu të jetë i përditësuar.
sudo apt update && sudo apt upgrade -y
Instaloni paketat e nevojshme.
sudo apt install -y git wget curl socat
Instaloni Nginx
Instaloni serverin në internet Nginx.
sudo apt install -y nginx
Kontrolloni versionin.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Instaloni Python dhe Lexicon
Si hap i parë në procesin e marrjes së certifikatave të shkronjave të egra nga Let's Encrypt duke përdorur acme.sh dhe Vultr API, duhet të instaloni Python dhe Lexicon . Lexicon është një paketë Python që ofron një mënyrë për të manipuluar të dhënat DNS në ofrues të shumtë DNS në një mënyrë të standardizuar.
Instaloni Python nëse nuk është i instaluar tashmë në sistemin tuaj.
sudo apt install -y python3
Konfirmoni instalimin duke verifikuar versionin.
python3 --version
# Python 3.7.3
Instaloni mjetin Lexicon. Një leksikon është një mjet Python që ju lejon të manipuloni të dhënat DNS në ofrues të ndryshëm DNS në një mënyrë të standardizuar.
sudo apt install -y lexicon
Kontrolloni versionin Lexicon.
lexicon --version
# lexicon 3.0.8
Instaloni acme.sh
klientin
Acme.sh
është një klient i protokollit ACME i shkruar thjesht në gjuhën Shell (Unix shell) që automatizon procesin e marrjes së një certifikate të nënshkruar nëpërmjet Let's Encrypt. Ai mbështet ACME v1 dhe ACME v2, dhe më e rëndësishmja, ai mbështet çertifikatat e karaktereve ACME v2. Në këtë seksion, ne instalojmë një skript Acme.sh.
SHËNIM: Rekomandohet përdorimi i root
përdoruesit për të instaluar acme.sh
, megjithëse nuk kërkon root
/ sudo
akses.
Kalo te root
përdoruesi nga përdoruesi i rregullt nëse e ke krijuar.
sudo su - root
Shkarkoni dhe instaloni acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Kontrolloni versionin.
acme.sh --version
# v2.8.2
Merrni çertifikatat e shkronjave të egra nga Let's Encrypt
Për të marrë një certifikatë karakteristike, ne mund të përdorim vetëm metodën e vërtetimit DNS. Ne përdorim Lexicon dhe Vultr DNS API për të manipuluar të dhënat TXT DNS.
Merrni çertifikatat e shenjave të karakterit RSA dhe ECC për domenin tuaj.
# 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
SHËNIM : Mos harroni të zëvendësoni example.com
me emrin e domenit tuaj dhe zëvendësoni vlerat e vendmbajtësit të Vultr API me tuajat.
Pas ekzekutimit të komandave të mëparshme, certifikatat dhe çelësat tuaja janë në:
- Për RSA:
~/.acme.sh/example.com
drejtoria.
- Për ECC/ECDSA:
~/.acme.sh/example.com_ecc
drejtoria.
SHËNIM : Nuk duhet të përdorni skedarët e certifikatës në ~/.acme.sh/
dosje, ato janë vetëm për përdorim të brendshëm, struktura e drejtorisë mund të ndryshojë në të ardhmen.
Për të renditur certifikatat tuaja, mund të ekzekutoni:
acme.sh --list
Krijoni një dosje për të ruajtur certifikatat tuaja në prodhim. Ne përdorim /etc/letsencrypt
drejtorinë.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Instaloni/kopjoni certifikatat për përdorim prodhimi në serverin tuaj.
# 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"
Tani që kemi marrë me sukses çertifikatat e shkronjave të egra nga Let's Encrypt, duhet të konfigurojmë serverin në internet Nginx. Të gjitha certifikatat rinovohen automatikisht çdo 60 ditë.
Pas marrjes dhe instalimit të certifikatave në vendndodhjen tuaj të preferuar, mund të dilni nga root
përdoruesi në një sudo
përdorues të rregullt dhe të vazhdoni të menaxhoni serverin tuaj duke përdorur sudo
nëse kërkohet.
exit
Ekzekutoni sudo vim /etc/nginx/sites-available/example.com.conf
dhe plotësoni skedarin me përmbajtjen e mëposhtme. Zëvendësoni të gjitha dukuritë e example.com
me emrin tuaj të domenit.
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;
}
Aktivizoni example.com.conf
konfigurimin e ri duke e lidhur skedarin me sites-enabled
drejtorinë.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Testoni konfigurimin Nginx.
sudo nginx -t
Rifresko Nginx.
sudo systemctl reload nginx.service
Kjo eshte. Ne vendosëm certifikata të shkronjave të egra në Nginx, duke përdorur acme.sh, Lexicon dhe Vultr API. Certifikatat Wildcard mund të jenë të dobishme kur dëshironi të siguroni shumë nënfusha të nivelit të parë të krijuar në mënyrë dinamike.