Hvordan sikre Nginx med Lets Encrypt på Ubuntu og Debian


Etter den forrige Let's Encrypt-veiledningen angående Apache SSL, vil vi i denne artikkelen diskutere hvordan du genererer og installerer et gratis SSL/TLS-sertifikat utstedt av Let's Encrypt CA for Nginx webserver på Ubuntu eller Debian.

  1. Sikker Apache med gratis Let's Encrypt på Ubuntu og Debian
  2. Installer Let's Encrypt SSL to Secure Apache på RHEL og CentOS

  1. Et registrert domene med gyldige DNS A-poster for å peke tilbake til IP-adressen til serveren din.
  2. En installert Nginx-nettserver med aktivert SSL og Vhost, i tilfelle du planlegger å være vert for flere domener eller underdomener.

Trinn 1: Installere Nginx Web Server

1. På det første trinnet, installer Nginx-nettserveren, hvis den ikke allerede er installert, ved å gi kommandoen nedenfor:

$ sudo apt-get install nginx

Trinn 2: Generer et Let's Encrypt SSL-sertifikat for Nginx

2. Før du genererer et gratis SSL/TLS-sertifikat, installer Let's Encrypt-programvaren i /usr/local/ filsystemhierarki ved hjelp av git-klienten ved å utstede kommandoene nedenfor:

$ sudo apt-get -y install git
$ cd /usr/local/
$ sudo git clone https://github.com/letsencrypt/letsencrypt

3. Selv om prosedyren for å få et sertifikat for Nginx er automatisert, kan du fortsatt manuelt opprette og installere et gratis SSL-sertifikat for Nginx ved å bruke Let's Encrypt Standalone plugin.

Denne metoden krever at port 80 ikke må være i bruk på systemet ditt i en kort periode mens Let's Encrypt-klienten validerer serverens identitet før sertifikatet genereres.

Hvis du allerede kjører Nginx, stopp tjenesten ved å gi følgende kommando.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

Hvis du kjører en annen tjeneste som binder seg til port 80, stopp den tjenesten også.

4. Bekreft at port 80 er ledig ved å kjøre netstat-kommandoen:

$ sudo netstat -tlpn | grep 80

5. Nå er det på tide å kjøre letsencrypt for å få et SSL-sertifikat. Gå til Let's Encrypt-installasjonskatalogen som finnes i /usr/local/letsencrypt-systembanen og kjør letsencrypt-auto-kommandoen ved å angi det eneste --standalone-alternativet og -d-flagget for hvert domene eller underdomene du ønsker å generere et sertifikat.

$ cd /usr/local/letsencrypt
$ sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld 

6. Skriv inn e-postadressen som skal brukes av Let's Encrypt for tapt nøkkelgjenoppretting eller hastevarsler.

7. Godta vilkårene for lisensen ved å trykke Enter-tasten.

8. Til slutt, hvis alt gikk vellykket, skal en melding som ligner på skjermbildet nedenfor vises på terminalkonsollen.

Trinn 3: Installer Let's Encrypt SSL-sertifikat i Nginx

9. Nå som SSL-sertifikatet ditt er generert, er det på tide å konfigurere Nginx-nettserveren til å bruke den. De nye SSL-sertifikatene er plassert i /etc/letsencrypt/live/ under en katalog oppkalt etter domenenavnet ditt. Kjør ls-kommandoen for å vise sertifikatfilene som er utstedt for domenet ditt.

$ sudo ls /etc/letsencrypt/live/
$ sudo ls -al /etc/letsencrypt/live/caeszar.tk

10. Deretter åpner du /etc/nginx/sites-available/default-filen med et tekstredigeringsprogram og legger til følgende blokk etter den første kommenterte linjen som spesifiserer begynnelsen av SSL-blokken. Bruk skjermbildet nedenfor som veiledning.

$ sudo nano /etc/nginx/sites-enabled/default

Nginx-blokkutdrag:

# SSL configuration
        #
        listen 443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/caeszar.tk/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/caeszar.tk/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
        ssl_dhparam /etc/nginx/ssl/dhparams.pem;

Bytt ut domenenavnsverdiene for SSL-sertifikater tilsvarende.

11. På neste trinn generer du en sterk Diffie-Hellman-chiffer i /etc/nginx/ssl/-katalogen for å beskytte serveren din mot Logjam-angrepet ved å kjøre følgende kommandoer.

$ sudo mkdir /etc/nginx/ssl
$ cd /etc/nginx/ssl
$ sudo openssl dhparam -out dhparams.pem 2048

12. Til slutt, start Nginx daemon på nytt for å reflektere endringer.

$ sudo systemctl restart nginx

og test SSL-sertifikatet ditt ved å gå til URL-en nedenfor.

https://www.ssllabs.com/ssltest/analyze.html

Trinn 4: Automatisk fornyelse La oss kryptere Nginx-sertifikater

13. Sertifikater utstedt av Let's Encrypt CA er gyldige i 90 dager. For å automatisk fornye filene før utløpsdatoen oppretter du ssl-renew.sh bash-skript i katalogen /usr/local/bin/ med følgende innhold.

$ sudo nano /usr/local/bin/ssl-renew.sh

Legg til følgende innhold i filen ssl-renew.sh.

#!/bin/bash

cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d your_domain.tld
sudo systemctl reload nginx
exit 0

Erstatt --webroot-path-variabelen for å matche Nginx-dokumentroten din. Sørg for at skriptet er kjørbart ved å gi følgende kommando.

$ sudo chmod +x /usr/local/bin/ssl-renew.sh

14. Til slutt legg til en cron-jobb for å kjøre skriptet annenhver måned ved midnatt for å sikre at sertifikatet ditt vil bli oppdatert om omtrent 30 dager før det utløper.

$ sudo crontab -e

Legg til følgende linje nederst i filen.

0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/your_domain.tld-renew.log 2>&1

Det er det! Nginx-serveren din serverer nå SSL-innhold ved hjelp av et gratis Let's Encrypt SSL-sertifikat.