Let's Encrypti SSL certbotiga Nginxile — juhend
Käivita serveris ühe käsuga (kontrolli enne skripti sisu allpool):
curl -sSL https://cp.lv/scripts/besplatnyj-ssl-lets-encrypt.sh | sudo bash…või wgetiga:
wget -qO- https://cp.lv/scripts/besplatnyj-ssl-lets-encrypt.sh | sudo bashSkripti sisu besplatnyj-ssl-lets-encrypt.sh:
#!/usr/bin/env bash
# Issue a Let's Encrypt certificate for Nginx
set -e
export DEBIAN_FRONTEND=noninteractive
DOMAIN=example.com
[email protected]
# 1. Open ports 80 and 443
sudo ufw allow 'Nginx Full' || true
# 2. Install certbot with the Nginx plugin
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
# 3. Issue the certificate and set up the HTTPS redirect (non-interactive)
sudo certbot --nginx -d ${DOMAIN} -d www.${DOMAIN} \
--non-interactive --agree-tos -m ${EMAIL} --redirect
# 4. Check the Nginx config and automatic renewal
sudo nginx -t && sudo systemctl reload nginx
sudo certbot renew --dry-run
echo "Done: HTTPS is enabled for ${DOMAIN}, automatic renewal is configured."
Let’s Encrypt on mittetulunduslik sertifitseerimiskeskus, mis väljastab TLS-sertifikaate tasuta: sertifikaat ise ei maksa midagi ning utiliit certbot väljastab ja uuendab seda automaatselt. Allpool on kirjas, kuidas lülitada Nginxi saidil HTTPS sisse mõne minutiga.
Mida on eelnevalt vaja
- Domeen, mille A-kirje osutab sinu serveri IP-le.
- Töötav Nginxi server block korrektse
server_name-ga. - Avatud pordid 80 ja 443:
sudo ufw allow 'Nginx Full'
Port 80 on kohustuslik — selle kaudu kontrollib Let’s Encrypt domeeni omandit (HTTP-01 challenge).
Kui server block pole veel loodud, ava konfiguratsioonifail redaktoris (nano, vim või mcedit):
sudo nano /etc/nginx/sites-available/example.com
Minimaalne HTTP-konfiguratsioon domeeni kontrolliks (hiljem lisab certbot siia HTTPS-i):
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
}
Või loo konfiguratsioon tervikuna ühe käsuga — kopeeri ja kleebi konsooli (jutumärgid 'EOF' on olulised, et Nginx $-muutujaid ei puutuks):
sudo tee /etc/nginx/sites-available/example.com > /dev/null << 'EOF'
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
}
EOF
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Samm 1. Certboti paigaldamine
Soovitatav viis on snap kaudu — seal on alati värske versioon:
sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Alternatiiv apt kaudu (kui snap pole saadaval):
sudo apt install certbot python3-certbot-nginx -y
Samm 2. Sertifikaadi väljastamine
Nginxi plugin leiab ise õige server block’i, väljastab sertifikaadi ja kirjutab HTTPS-i seaded sisse:
sudo certbot --nginx -d example.com -d www.example.com
Certbot küsib e-posti aadressi (aegumise teadete jaoks) ja nõustumist tingimustega. Ümbersuunamise küsimuse juures vali variant HTTP → HTTPS suunamisega. Pärast edukat väljastamist salvestatakse sertifikaat kausta /etc/letsencrypt/live/example.com/.
Samm 3. Mida certbot konfiguratsiooni lisab
Pärast väljastamist ilmuvad server block’i read:
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
Ja eraldi ümbersuunamise plokk pordilt 80 HTTPS-ile. Kontrolli ja lae konfiguratsioon uuesti:
sudo nginx -t
sudo systemctl reload nginx
Samm 4. Automaatse uuendamise kontroll
Let’s Encrypti sertifikaadid kehtivad 90 päeva. Certbot paigaldab systemd-taimeri, mis uuendab neid automaatselt. Kontrolli taimerit ja tee testuuendus:
systemctl list-timers | grep certbot
sudo certbot renew --dry-run
Kui --dry-run lõppes vigadeta, õnnestub ka päris uuendamine. Käsitsi pole vaja midagi teha.
Samm 5. HTTPS-i kontroll
Ava https://example.com — aadressiribale ilmub lukk. Sertifikaadiahelat ja kehtivusaega saab kontrollida konsoolist:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates
Kasulikud certboti käsud
| Ülesanne | Käsk |
|---|---|
| Sertifikaatide loend | sudo certbot certificates |
| Uuenda kohe | sudo certbot renew |
| Tühista sertifikaat | sudo certbot revoke --cert-name example.com |
| Lisa domeen | sudo certbot --nginx -d example.com -d shop.example.com |
Korduma kippuvad küsimused
Kas Let’s Encrypti sertifikaat on tõesti tasuta? Jah, sertifitseerimiskeskus Let’s Encrypt väljastab ja uuendab sertifikaate tasuta — selline on selle mudel. Maksta tuleb ainult serveri eest, kus sait töötab.
Mida teha, kui certbot kirjutab «challenge failed»?
Kõige sagedamini ei osuta domeeni A-kirje veel serverile või on port 80 kinni. Kontrolli DNS-i (dig example.com) ja tulemüüri reegleid.
Sertifikaat kehtib 90 päeva — kas pean seda käsitsi uuendama?
Ei. Certbot paigaldab automaatse uuendamise taimeri. Kontrolli seda käsuga certbot renew --dry-run — sellest piisab.
Kas wildcard-sertifikaati (*.example.com) saab väljastada? Jah, kuid selleks on vaja DNS-01 challenge’it ja sinu DNS-teenusepakkuja pluginat, sest HTTP-kontroll alamdomeenide jaoks ei sobi.
HTTPS on täna igale saidile kohustuslik: see mõjutab nii kasutajate usaldust kui ka kohta otsingutulemustes. Sertifikaadiga saidi saab käivitada pakettidel lehel VPS-i rent, poodidele ja CMS-ile sobib WordPressi VPS.