Kā nodrošināt Nginx ar Lets Encrypt Ubuntu un Debian


Pēc iepriekšējās Apšifrēšanas apmācība par Apache SSL šajā rakstā mēs apspriedīsim, kā izveidot un instalēt bezmaksas SSL/TLS sertifikātu, ko izdevusi Let’s Encrypt CA for Nginx tīmekļa serveris Ubuntu vai Debian.

  1. Apache nodrošiniet ar bezmaksas Let’s Encrypt Ubuntu un Debian
  2. RHEL un CentOS instalējiet Let’s Encrypt SSL to Secure Apache.

  1. Reģistrēts domēns ar derīgu DNS A reģistrē, lai norādītu uz jūsu servera IP adresi.
  2. Instalēts Nginx tīmekļa serveris ar iespējotu SSL un Vhost, ja plānojat mitināt vairākus domēnus vai apakšdomēnus.

1. darbība: Nginx tīmekļa servera instalēšana

1. Pirmajā solī instalējiet Nginx tīmekļa serveri, ja tas vēl nav instalēts, izsniedzot šādu komandu:

$ sudo apt-get install nginx

2. darbība: ģenerējiet Let’s Encrypt SSL sertifikātu Nginx

2. Pirms ģenerējat bezmaksas SSL/TLS sertifikātu, instalējiet Let’s Encrypt programmatūru /usr/local/ failu sistēmas hierarhijā ar git klienta palīdzību, izsniedzot šādas komandas:

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

3. Kaut arī Nginx sertifikāta iegūšanas procedūra ir automatizēta, jūs joprojām varat manuāli izveidot un instalēt bezmaksas SSL sertifikātu Nginx, izmantojot spraudni Let’s Encrypt Standalone.

Šī metode prasa, lai jūsu ports 80 īslaicīgi nebūtu jāizmanto jūsu sistēmā, kamēr Let’s Encrypt klients pirms sertifikāta ģenerēšanas pārbauda servera identitāti.

Ja jūs jau lietojat Nginx, pārtrauciet pakalpojumu, izsniedzot šādu komandu.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

Ja izmantojat citu pakalpojumu, kas ir saistīts ar 80. portu, pārtrauciet arī šo pakalpojumu.

4. Pārbaudiet, vai ports 80 ir brīvs, izpildot komandu netstat:

$ sudo netstat -tlpn | grep 80

5. Tagad ir pienācis laiks palaist letsencrypt , lai iegūtu SSL sertifikātu. Pārejiet uz šifrēšanas instalācijas direktoriju, kas atrodams sistēmas ceļā/usr/local/letsencrypt, un palaidiet komandu letsencrypt-auto, nodrošinot opciju certonly --standalone un -d karodziņu katrs domēns vai apakšdomēns, kuru vēlaties ģenerēt sertifikātu.

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

6. Ievadiet e-pasta adresi, kuru izmantosim Let’s Encrypt, lai pazaudētu atslēgu vai neatliekamus paziņojumus.

7. Piekrītiet licences noteikumiem, nospiežot taustiņu Enter.

8. Visbeidzot, ja viss ir izdevies, termināļa konsolē jāparādās zemāk redzamajam ekrānuzņēmumam līdzīgam ziņojumam.

3. darbība: instalējiet Let’s Encrypt SSL Certificate in Nginx

9. Tagad, kad jūsu SSL sertifikāts ir izveidots, ir laiks konfigurēt Nginx tīmekļa serveri tā izmantošanai. Jaunie SSL sertifikāti tiek ievietoti /etc/letsencrypt/live/ zem direktorija, kas nosaukts pēc jūsu domēna vārda. Palaidiet komandu ls, lai uzskaitītu jūsu domēnam izsniegtos sertifikāta failus.

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

10. Pēc tam atveriet failu /etc/nginx/sites-available/default ar teksta redaktoru un pēc pirmās komentētās rindas pievienojiet šādu bloku, kas norāda SSL bloka sākumu. Izmantojiet zemāk redzamo ekrānuzņēmumu kā norādījumu.

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

Nginx bloka fragments:

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

Attiecīgi nomainiet domēna vārda vērtības SSL sertifikātiem.

11. Nākamajā solī ģenerējiet spēcīgu Diffie-Hellman šifru direktorijā/etc/nginx/ssl /, lai aizsargātu jūsu serveri pret Logjam uzbrukumu, izpildot šādas komandas.

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

12. Visbeidzot restartējiet Nginx dēmonu, lai atspoguļotu izmaiņas.

$ sudo systemctl restart nginx

un pārbaudiet savu SSL sertifikātu, apmeklējot zemāk redzamo URL.

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

4. darbība. Automātiski atjaunojiet šifrējam Nginx sertifikātus

13. Let’s Encrypt CA izsniegtie sertifikāti ir derīgi 90 dienas. Lai failus automātiski atjaunotu pirms derīguma termiņa, direktorijā /usr/local/bin/ izveidojiet ssl-renew.sh bash skriptu ar šādu saturu.

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

Pievienojiet šādu saturu failam 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

Nomainiet mainīgo --webroot-path , lai tas atbilstu jūsu Nginx dokumenta saknei. Pārliecinieties, vai skripts ir izpildāms, izsniedzot šādu komandu.

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

14. Visbeidzot pievienojiet cron darbu, lai skriptu palaistu ik pēc diviem mēnešiem pusnaktī, lai pārliecinātos, ka jūsu sertifikāts tiks atjaunināts aptuveni 30 dienu laikā pirms tā derīguma termiņa beigām.

$ sudo crontab -e

Pievienojiet šādu rindiņu faila apakšdaļā.

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

Tieši tā! Jūsu Nginx serveris tagad apkalpo SSL saturu, izmantojot bezmaksas Let’s Encrypt SSL sertifikātu.