Sådan sikres Nginx med Lets Encrypt på Ubuntu og Debian


Efter den foregående Let's Encrypt-tutorial vedrørende Apache SSL diskuterer vi i denne artikel, hvordan man genererer og installerer et gratis SSL/TLS-certifikat udstedt af Let's Encrypt CA for Nginx webserver på Ubuntu eller Debian.

  1. Sikker Apache med gratis Lad os kryptere på Ubuntu og Debian
  2. Installer Lad os kryptere SSL til Secure Apache på RHEL og CentOS

  1. Et registreret domæne med gyldig DNS A registrerer for at pege tilbage til IP-adressen på din server.
  2. En installeret Nginx-webserver med aktiveret SSL og Vhost, hvis du planlægger at være vært for flere domæner eller underdomæner.

Trin 1: Installation af Nginx Web Server

1. Installer Nginx-webserveren på det første trin, hvis den ikke allerede er installeret, ved at udstede kommandoen nedenfor:

$ sudo apt-get install nginx

Trin 2: Generer et Lad os kryptere SSL-certifikat til Nginx

2. Inden du genererer et gratis SSL/TLS-certifikat, skal du installere Let’s Encrypt-software i /usr/local/ filsystemhierarki ved hjælp af git client ved at udstede nedenstående kommandoer:

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

3. Selvom proceduren for at få et certifikat til Nginx er automatiseret, kan du stadig manuelt oprette og installere et gratis SSL-certifikat til Nginx ved hjælp af Lad os kryptere det uafhængige plugin.

Denne metode kræver, at port 80 ikke må være i brug på dit system i en kort periode, mens Lad os kryptere klienten validerer serverens identitet, før generering af certifikatet.

Hvis du allerede kører Nginx, skal du stoppe tjenesten ved at udstede følgende kommando.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

Hvis du kører en anden service, der binder til port 80, skal du også stoppe den service.

4. Bekræft, at port 80 er fri ved at køre netstat-kommandoen:

$ sudo netstat -tlpn | grep 80

5. Nu er det tid til at køre letsencrypt for at få et SSL-certifikat. Gå til Lad os kryptere installationsmappe fundet i/usr/local/letsencrypt systemsti og kør letsencrypt-auto-kommandoen ved at angive certonly - standalone og -d flag for hvert domæne eller underdomæne, du ønsker at generere et certifikat.

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

6. Indtast den e-mail-adresse, som vil blive brugt af Lad os kryptere til gendannelse af mistede nøgler eller presserende meddelelser.

7. Enig med licensvilkårene ved at trykke på Enter-tasten.

8. Endelig, hvis alt gik vellykket, skulle en meddelelse svarende til skærmbilledet nedenfor vises på din terminalkonsol.

Trin 3: Installer Lad os kryptere SSL-certifikat i Nginx

9. Nu hvor dit SSL-certifikat er genereret, er det tid til at konfigurere Nginx webserver til at bruge det. De nye SSL-certifikater placeres i /etc/letsencrypt/live/ under en mappe opkaldt efter dit domænenavn. Kør kommandoen ls for at liste de certifikatfiler, der er udstedt til dit domæne.

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

10. Åbn derefter /etc/nginx/sites-available/default -fil med en teksteditor, og tilføj følgende blok efter den første kommenterede linje, der angiver begyndelsen af SSL-blokken. Brug nedenstående skærmbillede som vejledning.

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

Nginx-blokuddrag:

# 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;

Udskift domænenavnværdierne for SSL-certifikater i overensstemmelse hermed.

11. Generér på det næste trin en stærk Diffie-Hellman-chiffer i/etc/nginx/ssl/bibliotek for at beskytte din server mod Logjam-angrebet ved at køre følgende kommandoer.

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

12. Til sidst skal du genstarte Nginx-dæmonen for at afspejle ændringer.

$ sudo systemctl restart nginx

og test dit SSL-certifikat ved at besøge nedenstående URL.

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

Trin 4: Forny automatisk Lad os kryptere Nginx-certifikater

13. Certifikater udstedt af Let’s Encrypt CA er gyldige i 90 dage. For automatisk at forny filerne inden udløbsdatoen skal du oprette ssl-renew.sh bash-script i /usr/local/bin/ bibliotek med følgende indhold.

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

Føj følgende indhold til 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

Udskift --webroot-path -variablen for at matche din Nginx-dokumentrod. Sørg for, at scriptet er eksekverbart ved at udstede følgende kommando.

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

14. Tilføj endelig et cron-job for at køre scriptet hver anden måned ved midnat for at sikre, at dit certifikat opdateres ca. 30 dage inden det udløber.

$ sudo crontab -e

Tilføj følgende linje i bunden af filen.

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

Det er det! Din Nginx-server serverer nu SSL-indhold ved hjælp af et gratis Lad os kryptere SSL-certifikat.