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
- Biztonságos Apache a Free Let’s Encrypt segítségével Ubuntu és Debian rendszeren
- Telepítse a Let’s Encrypt SSL-t a Secure Apache-hoz RHEL-en és CentOS-en
Mintakörnyezet tesztelése
Követelmények
- Regisztrált domain érvényes DNS
A
rekordokkal, amelyek visszamutatnak a szerver IP-címére. - 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.