Weboldal keresés

Az Nginx biztonságossá tétele a Let's Encrypt segítségével Ubuntu és Debian rendszeren


A korábbi Titkosítsuk oktatóanyagot követően az Apache SSL-ről ebben a cikkben megvitatjuk, hogyan hozhat létre és telepíthet egy ingyenes SSL/TLS-tanúsítványt, amelyet a Let's Encrypt CA bocsátott ki. az Nginx webszerverhez Ubuntu vagy Debian rendszeren.

Olvassa el is
  1. Biztonságos Apache a Free Let’s Encrypt segítségével Ubuntu és Debian rendszeren
  2. Telepítse a Let’s Encrypt SSL-t a Secure Apache-hoz RHEL-en és CentOS-en
Mintakörnyezet tesztelése

Követelmények

  1. Regisztrált domain érvényes DNS A rekordokkal, amelyek visszamutatnak a szerver IP-címére.
  2. Telepített Nginx webszerver engedélyezett SSL-lel és Vhost-tal arra az esetre, ha több tartományt vagy aldomaint kíván üzemeltetni.

1. lépés: Az Nginx webszerver telepítése

1. Az első lépésben telepítse az Nginx webszervert, ha még nincs telepítve, az alábbi parancs kiadásával:

sudo apt-get install nginx

2. lépés: Hozzon létre egy Let’s Encrypt SSL-tanúsítványt az Nginx számára

2. Mielőtt ingyenes SSL/TLS-tanúsítványt generálna, telepítse a Let's Encrypt szoftvert a /usr/local/ fájlrendszer-hierarchiába a git klienst az alábbi parancsok kiadásával:

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

3. Bár az Nginx tanúsítvány megszerzésének folyamata automatizált, manuálisan is létrehozhat és telepíthet ingyenes SSL-tanúsítványt az Nginx számára a Let’s Encrypt Standalone beépülő modul használatával.

Ez a módszer megköveteli, hogy a 80-as port rövid ideig ne legyen használatban a rendszeren, miközben a Let’s Encrypt kliens ellenőrzi a szerver azonosságát a tanúsítvány generálása előtt.

Ha már fut az Nginx, állítsa le a szolgáltatást a következő parancs kiadásával.


sudo service nginx stop
OR
sudo systemctl stop nginx

Ha más olyan szolgáltatást futtat, amely a 80 porthoz kötődik, állítsa le azt is.

4. A netstat parancs futtatásával ellenőrizze, hogy a 80-as port szabad-e:

sudo netstat -tlpn | grep 80

5. Itt az ideje, hogy futtassa a letsencrypt programot, hogy megszerezze az SSL-tanúsítványt. Lépjen a Let's Encrypt telepítési könyvtárba, amely a /usr/local/letsencrypt rendszerútvonalban található, és futtassa a letsencrypt-auto parancsot a certonly --standalone opciót és -d jelzőt minden olyan domainhez vagy aldomainhez, amelyhez tanúsítványt kíván létrehozni.

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

6. Adja meg azt az e-mail címet, amelyet a Let’s Encrypt az elveszett kulcs-visszaállításhoz vagy sürgős értesítésekhez használ.

7. Az Enter billentyű lenyomásával fogadja el a licenc feltételeit.

8. Végül, ha minden sikeres volt, az alábbi képernyőképhez hasonló üzenetnek kell megjelennie a terminálkonzolon.

3. lépés: Telepítse a Let’s Encrypt SSL-tanúsítványt az Nginxben

9. Most, hogy SSL-tanúsítványa elkészült, ideje beállítani az Nginx webszervert a használatára. Az új SSL-tanúsítványok az /etc/letsencrypt/live/ mappában, a domain neve után elnevezett könyvtárban helyezkednek el. Futtassa az ls parancsot a tartományhoz kiadott tanúsítványfájlok listázásához.

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

10. Ezután nyissa meg a /etc/nginx/sites-available/default fájlt egy szövegszerkesztővel, és adja hozzá a következő blokkot az első megjegyzéssor után, amely megadja a SSL blokk. Használja az alábbi képernyőképet útmutatásként.

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

Nginx blokk kivonat:

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;

Cserélje le az SSL-tanúsítványok tartománynév-értékeit ennek megfelelően.

11. A következő lépésben hozzon létre egy erős Diffie-Hellman titkosítást az /etc/nginx/ssl/ könyvtárban, hogy megvédje szerverét a Logjam támadást a következő parancsok futtatásával.

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

12. Végül indítsa újra az Nginx démont a változások tükrözéséhez.

sudo systemctl restart nginx

és tesztelje SSL-tanúsítványát az alábbi URL-címen.

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

4. lépés: Automatikus megújítás Titkosítsuk az Nginx-tanúsítványokat

13. A Let’s Encrypt CA által kiadott tanúsítványok 90 napig érvényesek. A fájlok lejárati dátum előtti automatikus megújításához hozzon létre ssl-renew.sh bash szkriptet a /usr/local/bin/ könyvtárban a következő tartalommal.

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

Adja hozzá a következő tartalmat az ssl-renew.sh fájlhoz.

#!/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

Cserélje le a --webroot-path változót, hogy megfeleljen az Nginx dokumentumgyökérnek. Győződjön meg arról, hogy a szkript végrehajtható a következő parancs kiadásával.

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

14. Végül adjon hozzá egy cron feladatot a szkript futtatásához kéthavonta éjfélkor, hogy biztosítsa, hogy tanúsítványa körülbelül 30 napon belül frissüljön a lejárat előtt.

sudo crontab -e

Adja hozzá a következő sort a fájl aljához.

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

Ez az! Az Ön Nginx-szervere most egy ingyenes Titkosítsuk az SSL-t tanúsítvány használatával SSL-tartalmat szolgál ki.