Kaip apsaugoti „Nginx“ leidžiant šifruoti „Ubuntu“ ir „Debian“


Laikydamiesi ankstesnės „Apache SSL“ šifravimo pamokos, šiame straipsnyje aptarsime, kaip sukurti ir įdiegti nemokamą „SSL/TLS“ sertifikatą, kurį išleido „Let’s Encrypt CA for Nginx“ žiniatinklio serveris „Ubuntu“ ar „Debian“.

  1. Apsaugokite „Apache“ naudodami nemokamą šifravimą „Ubuntu“ ir „Debian“
  2. Įdiekime „Let’s Encrypt SSL to Secure Apache“ RHEL ir „CentOS“

  1. Užregistruotas domenas su galiojančiu DNS A įrašo, kad būtų galima nukreipti atgal į jūsų serverio IP adresą.
  2. Įdiegtas „Nginx“ tinklo serveris su įgalintais SSL ir „Vhost“, jei planuojate priglobti kelis domenus ar padomenius.

1 veiksmas: įdiekite „Nginx“ tinklo serverį

1. Pirmame etape įdiekite „Nginx“ žiniatinklio serverį, jei jis dar neįdiegtas, pateikdami šią komandą:

$ sudo apt-get install nginx

2 veiksmas: sugeneruokite „Nginx“ SSL sertifikatą

2. Prieš generuodami nemokamą SSL/TLS sertifikatą, „git“ kliento pagalba įdiekite „Let’s Encrypt“ programinę įrangą failų sistemos hierarchijoje /usr/local/, pateikdami šias komandas:

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

3. Nors „Nginx“ sertifikato gavimo procedūra yra automatizuota, vis tiek galite rankiniu būdu sukurti ir įdiegti nemokamą „Nginx“ SSL sertifikatą naudodami įskiepį „Let’s Encrypt Standalone“.

Šis metodas reikalauja, kad 80 prievadas jūsų sistemoje neturėtų būti naudojamas trumpą laiką, o „Let’s Encrypt“ klientas patikrina serverio tapatybę prieš generuodamas sertifikatą.

Jei jau naudojate „Nginx“, sustabdykite paslaugą pateikdami šią komandą.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

Jei naudojate kitą paslaugą, susiejančią 80 prievadą, taip pat sustabdykite šią paslaugą.

4. Patvirtinkite, kad 80 prievadas yra laisvas, vykdydami komandą netstat:

$ sudo netstat -tlpn | grep 80

5. Dabar atėjo laikas paleisti letsencrypt , kad gautumėte SSL sertifikatą. Eikite į „Encrypt“ diegimo katalogą, esantį/usr/local/letsencrypt sistemos kelyje, ir paleiskite komandą letsencrypt-auto, pateikdami parinktį certonly --standalone ir -d kiekvieno domeno ar padomenio, kurį norite sugeneruoti sertifikatą.

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

6. Įveskite el. Pašto adresą, kurį naudosime „Let’s Encrypt“, jei norite prarasti raktus arba skubius pranešimus.

7. Sutikite su licencijos sąlygomis paspausdami klavišą Enter.

8. Galiausiai, jei viskas pavyko, terminalo konsolėje turėtų pasirodyti pranešimas, panašus į žemiau pateiktą ekrano kopiją.

3 žingsnis: įdiekime „Encrypt SSL“ sertifikatą „Nginx“

9. Dabar, kai sugeneruotas jūsų SSL sertifikatas, laikas sukonfigūruoti „Nginx“ tinklo serverį jį naudoti. Naujai SSL sertifikatai dedami į /etc/letsencrypt/live/ po katalogu, pavadintu jūsų domeno vardu. Paleiskite komandą ls, kad išvardytumėte domenui išduotus sertifikato failus.

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

10. Tada atidarykite failą /etc/nginx/sites-available/default su teksto redaktoriumi ir pridėkite šį bloką po pirmosios komentuojamos eilutės, nurodančios SSL bloko pradžią. Kaip nurodymą naudokite toliau pateiktą ekrano kopiją.

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

„Nginx“ blokų ištrauka:

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

Atitinkamai pakeiskite SSL sertifikatų domeno vardo vertes.

11. Kitame etape sugeneruokite stiprų „Diffie-Hellman“ šifrą kataloge/etc/nginx/ssl /, kad apsaugotumėte savo serverį nuo „Logjam“ atakos vykdydami šias komandas.

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

12. Galiausiai iš naujo paleiskite „Nginx“ demoną, kad atspindėtumėte pokyčius.

$ sudo systemctl restart nginx

ir išbandykite SSL sertifikatą apsilankę žemiau esančiame URL.

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

4 žingsnis: automatiškai atnaujinkite šifruokime „Nginx“ sertifikatus

13. „Let’s Encrypt CA“ išduoti sertifikatai galioja 90 dienų. Norėdami automatiškai atnaujinti failus iki galiojimo pabaigos datos, sukurkite ssl-renew.sh bash scenarijų kataloge /usr/local/bin/ su tokiu turiniu.

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

Įtraukite šį turinį į failą 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

Pakeiskite --webroot-path kintamąjį, kad jis atitiktų jūsų „Nginx“ dokumento šaknį. Įsitikinkite, kad scenarijus yra vykdomas išduodant šią komandą.

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

14. Galiausiai pridėkite „cron“ užduotį, kad scenarijus būtų vykdomas kas du mėnesius vidurnaktį, kad užtikrintumėte, jog jūsų pažymėjimas bus atnaujintas maždaug po 30 dienų iki jo galiojimo pabaigos.

$ sudo crontab -e

Failo apačioje pridėkite šią eilutę.

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

Viskas! Dabar jūsų „Nginx“ serveris teikia SSL turinį naudodamas nemokamą „Encrypt SSL“ sertifikatą.