Tasuta SSL Let's Encryptiga

Let's Encrypt väljastab tasuta HTTPS-sertifikaate, mis uuenevad automaatselt. See juhend katab Nginxi seadistuse certbot-iga Ubuntu/Debiani serveris.

Eeltingimused

  • Server avaliku IP-ga ja juurkasutaja (sudo) õigused
  • Domeen, mille A-kirje osutab juba sellele serverile
  • Pordid 80 ja 443 avatud (tulemüüris ja vajadusel Cloudflare'is)

Cloudflare proxy

Kui domeen on Cloudflare'is proxied (oranž pilv), ei jõua Let's Encrypti HTTP-kontroll otse serverini. Lülita kirje sertifikaadi loomise ajaks ajutiselt DNS only (hall) peale või kasuta DNS-väljakutset (vt allpool).

1. Paigalda certbot

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

2. Loo sertifikaat

sudo certbot --nginx -d näide.ee -d www.näide.ee

Certbot:

  1. Küsib su e-posti (uuendamise hoiatuste jaoks).
  2. Palub nõustuda tingimustega.
  3. Seadistab Nginxi automaatselt HTTPS-i jaoks.

HTTP → HTTPS ümbersuunamine

Kui certbot küsib, kas suunata HTTP automaatselt HTTPS-ile, vali jah (2).

3. Kontrolli automaatset uuendamist

Sertifikaadid kehtivad 90 päeva. Certbot lisab uuendamise ajastatud tööna — kontrolli, et see töötab (päriselt midagi ei uuendata, vaid tehakse proov):

sudo certbot renew --dry-run

Kui näed „Congratulations, all simulated renewals succeeded“, on kõik korras.

4. Nginxi näidiskonfiguratsioon

Certbot teeb selle ise, kuid nii näeb tulemus umbes välja:

server {
    listen 80;
    server_name näide.ee www.näide.ee;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name näide.ee www.näide.ee;

    ssl_certificate     /etc/letsencrypt/live/näide.ee/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/näide.ee/privkey.pem;

    root /var/www/näide.ee;
    index index.php index.html;
}

Peale muudatusi testi ja laadi Nginx uuesti:

sudo nginx -t && sudo systemctl reload nginx

DNS-väljakutse (kui port 80 pole kättesaadav)

Kui kasutad Cloudflare proxy't ja ei taha seda välja lülitada, kasuta DNS-väljakutset (vajab Cloudflare API-token'it):

sudo apt install python3-certbot-dns-cloudflare -y
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
  -d näide.ee -d "*.näide.ee"

See meetod lubab ka metamärgi (wildcard) sertifikaate (*.näide.ee).

Tõrge: „Timeout during connect“
  • Port 80 ei ole avatud või Cloudflare proxy varjab serverit → kasuta DNS-väljakutset.
  • Kontrolli, et A-kirje osutab tõesti sellele serverile.
  • Kontrolli tulemüüri: sudo ufw allow 80,443/tcp.

Kontroll-loend

  • Certbot paigaldatud
  • Sertifikaat loodud
  • certbot renew --dry-run õnnestub
  • HTTP suunab HTTPS-ile
  • SSL Labsis (ssllabs.com/ssltest) vähemalt A-hinne