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.
- Sikker Apache med gratis Let's Encrypt på Ubuntu og Debian
- Installer Let's Encrypt SSL to Secure Apache på RHEL og CentOS
- Et registrert domene med gyldige DNS
A
-poster for å peke tilbake til IP-adressen til serveren din. - 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.