Kako zaščititi Nginx z Lets Encrypt v Ubuntu in Debian
Po prejšnji vadnici Let’s Encrypt v zvezi z Apache SSL bomo v tem članku razpravljali o tem, kako ustvariti in namestiti brezplačno potrdilo SSL/TLS, ki ga je izdal Let’s Encrypt CA za spletni strežnik Nginx v Ubuntu ali Debian.
- Zaščitite Apache z brezplačnim šifriranjem v Ubuntuju in Debianu
- Namestite Šifrirajmo SSL za zaščito Apache na RHEL in CentOS
- Registrirana domena z veljavnimi zapisi DNS
A
, ki kažejo na naslov IP vašega strežnika. - Nameščen spletni strežnik Nginx z omogočenima SSL in Vhost, če nameravate gostiti več domen ali poddomen.
1. korak: Namestitev spletnega strežnika Nginx
1. V prvem koraku namestite spletni strežnik Nginx, če že ni nameščen, tako, da izdate spodnji ukaz:
$ sudo apt-get install nginx
2. korak: Ustvarimo šifrirano potrdilo SSL za Nginx
2. Preden ustvarite brezplačno potrdilo SSL/TLS, s pomočjo odjemalca git namestite programsko opremo Let's Encrypt v hierarhijo datotečnega sistema /usr/local/
z izdajo spodnjih ukazov:
$ sudo apt-get -y install git $ cd /usr/local/ $ sudo git clone https://github.com/letsencrypt/letsencrypt
3. Čeprav je postopek pridobivanja potrdila za Nginx avtomatiziran, lahko še vedno ročno ustvarite in namestite brezplačno potrdilo SSL za Nginx z uporabo vtičnika Let’s Encrypt Standalone.
Ta metoda zahteva, da vrata 80 v vašem sistemu ne smejo biti v uporabi kratek čas, medtem ko odjemalec Let’s Encrypt potrdi identiteto strežnika, preden ustvari potrdilo.
Če že uporabljate Nginx, ustavite storitev tako, da izdate naslednji ukaz.
$ sudo service nginx stop OR $ sudo systemctl stop nginx
Če uporabljate drugo storitev, ki se veže na vrata 80, ustavite tudi to storitev.
4. Potrdite, da so vrata 80 brezplačna, tako da zaženete ukaz netstat:
$ sudo netstat -tlpn | grep 80
5. Zdaj je čas, da zaženete letsencrypt
, da pridobite potrdilo SSL. Pojdite na namestitveni imenik Let's Encrypt, ki ga najdemo v sistemski poti/usr/local/letsencrypt, in zaženite ukaz letsencrypt-auto, tako da zagotovite certonly --standalone
možnost in -d
zastavico za za vsako domeno ali poddomeno, za katero želite ustvariti potrdilo.
$ cd /usr/local/letsencrypt $ sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld
6. Vnesite e-poštni naslov, ki ga bo Let’s Encrypt uporabljal za obnovitev izgubljenih ključev ali nujna obvestila.
7. S pogoji licence se strinjate s pritiskom na tipko Enter.
8. Nazadnje, če je šlo vse uspešno, se na terminalski konzoli prikaže sporočilo, podobno spodnjemu posnetku zaslona.
3. korak: Namestite šifrirajmo SSL potrdilo v Nginx
9. Zdaj, ko je bilo vaše SSL potrdilo ustvarjeno, je čas, da spletni strežnik Nginx konfigurirate za njegovo uporabo. Novo potrdilo SSL se shrani v /etc/letsencrypt/live/
v imenik, imenovan po imenu vaše domene. Zaženite ukaz ls za prikaz datotek potrdil, izdanih za vašo domeno.
$ sudo ls /etc/letsencrypt/live/ $ sudo ls -al /etc/letsencrypt/live/caeszar.tk
10. Nato z urejevalnikom besedila odprite datoteko /etc/nginx/sites-available/default
in dodajte prvi blok za prvo komentirano vrstico, ki določa začetek bloka SSL. Kot navodilo uporabite spodnji posnetek zaslona.
$ sudo nano /etc/nginx/sites-enabled/default
Izvleček bloka Nginx:
# 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;
Vrednosti domenskih imen za SSL potrdila ustrezno zamenjajte.
11. V naslednjem koraku ustvarite močno šifro Diffie-Hellman v imeniku/etc/nginx/ssl /, da zaščitite svoj strežnik pred napadom Logjam z zagonom naslednjih ukazov.
$ sudo mkdir /etc/nginx/ssl $ cd /etc/nginx/ssl $ sudo openssl dhparam -out dhparams.pem 2048
12. Na koncu ponovno zaženite demon Nginx, da odraža spremembe.
$ sudo systemctl restart nginx
in preizkusite svoje potrdilo SSL, tako da obiščete spodnji URL.
https://www.ssllabs.com/ssltest/analyze.html
4. korak: Samodejno podaljšajmo Šifrirajmo potrdila Nginx
13. Potrdila, ki jih je izdal Let’s Encrypt CA, veljajo 90 dni. Če želite datoteke samodejno obnoviti pred datumom poteka, v imeniku /usr/local/bin/
ustvarite skript ssl-renew.sh
bash z naslednjo vsebino.
$ sudo nano /usr/local/bin/ssl-renew.sh
V datoteko ssl-renew.sh
dodajte naslednjo vsebino.
#!/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
Zamenjajte spremenljivko --webroot-path
, da se ujema s korenom dokumenta Nginx. Preverite, ali je skript izvedljiv, tako da izdate naslednji ukaz.
$ sudo chmod +x /usr/local/bin/ssl-renew.sh
14. Na koncu dodajte še opravilo cron za zagon skripta vsaka dva meseca ob polnoči, da zagotovite, da bo vaše potrdilo posodobljeno približno v 30 dneh, preden poteče.
$ sudo crontab -e
Na dnu datoteke dodajte naslednjo vrstico.
0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/your_domain.tld-renew.log 2>&1
To je to! Vaš strežnik Nginx zdaj streže vsebino SSL z brezplačnim potrdilom Let’s Encrypt SSL.