Kuinka suojata Nginx Let's Encryptillä Ubuntussa ja Debianissa


Edellisen Apache SSL:ää koskevan Let's Encrypt -opetusohjelman jälkeen tässä artikkelissa keskustelemme ilmaisen Let's Encrypt CA:n myöntämän SSL/TLS-varmenteen luomisesta ja asentamisesta. Nginx-verkkopalvelimelle Ubuntussa tai Debianissa.

Lue myös
  1. Suojaa Apache Free Let's Encryptillä Ubuntussa ja Debianissa
  2. Asenna Let’s Encrypt SSL Secure Apachea varten RHEL- ja CentOS-järjestelmiin
Testaus näyteympäristö

Vaatimukset

  1. Rekisteröity verkkotunnus kelvollisilla DNS A -tietueilla, jotka osoittavat takaisin palvelimesi IP-osoitteeseen.
  2. Asennettu Nginx-verkkopalvelin, jossa on käytössä SSL ja Vhost, jos aiot isännöidä useita verkkotunnuksia tai aliverkkotunnuksia.

Vaihe 1: Nginx-verkkopalvelimen asentaminen

1. Asenna Nginx-verkkopalvelin ensimmäisessä vaiheessa, jos sitä ei ole vielä asennettu, antamalla alla oleva komento:

sudo apt-get install nginx

Vaihe 2: Luo Let's Encrypt SSL -varmenne Nginxille

2. Ennen kuin luot ilmaisen SSL/TLS-varmenteen, asenna Let's Encrypt -ohjelmisto /usr/local/-tiedostojärjestelmähierarkiaan >git-asiakasohjelma antamalla seuraavat komennot:

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

3. Vaikka Nginx-varmenteen hankkiminen on automatisoitu, voit silti luoda ja asentaa manuaalisesti ilmaisen SSL-varmenteen Nginxille Let’s Encrypt Standalone -laajennuksella.

Tämä menetelmä edellyttää, että portti 80 ei saa olla käytössä järjestelmässäsi lyhyen aikaa, kun Let’s Encrypt -asiakas vahvistaa palvelimen identiteetin ennen varmenteen luomista.

Jos käytät jo Nginxiä, lopeta palvelu antamalla seuraava komento.


sudo service nginx stop
OR
sudo systemctl stop nginx

Jos käytät muuta palvelua, joka sitoo porttia 80, lopeta myös tämä palvelu.

4. Varmista, että portti 80 on vapaa suorittamalla netstat-komento:

sudo netstat -tlpn | grep 80

5. Nyt on aika suorittaa letsencrypt saadaksesi SSL-varmenteen. Siirry Let's Encrypt -asennushakemistoon, joka löytyy järjestelmäpolusta /usr/local/letsencrypt ja suorita komento letsencrypt-auto antamalla certonly --standalone-vaihtoehto ja -d-merkki jokaiselle verkkotunnukselle tai aliverkkotunnukselle, jolle haluat luoda varmenteen.

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

6. Anna sähköpostiosoite, jota Let's Encrypt käyttää kadonneiden avainten palauttamiseen tai kiireellisiin ilmoituksiin.

7. Hyväksy käyttöoikeuden ehdot painamalla Enter-näppäintä.

8. Lopuksi, jos kaikki onnistui, päätekonsoliisi pitäisi ilmestyä alla olevan kuvakaappauksen kaltainen viesti.

Vaihe 3: Asenna Let's Encrypt SSL-sertifikaatti Nginxiin

9. Nyt kun SSL-sertifikaattisi on luotu, on aika määrittää Nginx-verkkopalvelin käyttämään sitä. Uudet SSL-sertifikaatit sijoitetaan hakemistoon /etc/letsencrypt/live/ verkkotunnuksesi nimen mukaan nimettyyn hakemistoon. Suorita ls-komento listataksesi toimialueellesi myönnetyt sertifikaattitiedostot.

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

10. Avaa seuraavaksi tiedosto /etc/nginx/sites-available/default tekstieditorilla ja lisää seuraava lohko ensimmäisen kommentoidun rivin jälkeen, joka määrittää SSL-esto. Käytä alla olevaa kuvakaappausta ohjeena.

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

Nginx-lohkoote:

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;

Korvaa SSL-sertifikaattien toimialueen nimiarvot vastaavasti.

11. Luo seuraavassa vaiheessa vahva Diffie-Hellman-salaus /etc/nginx/ssl/-hakemistoon suojataksesi palvelintasi Logjam-hyökkäys suorittamalla seuraavat komennot.

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

12. Lopuksi käynnistä Nginx-daemon uudelleen muutosten huomioon ottamiseksi.

sudo systemctl restart nginx

ja testaa SSL-sertifikaattisi käymällä alla olevassa URL-osoitteessa.

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

Vaihe 4: Automaattinen uusiminen Salataan Nginx-sertifikaatit

13. Let's Encrypt CA:n myöntämät sertifikaatit ovat voimassa 90 päivää. Jotta tiedostot uusittaisiin automaattisesti ennen vanhentumispäivää, luo ssl-renew.sh bash-skripti /usr/local/bin/-hakemistoon, jossa on seuraava sisältö.

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

Lisää seuraava sisältö ssl-renew.sh-tiedostoon.

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

Korvaa muuttuja --webroot-path vastaamaan Nginx-asiakirjan juuria. Varmista, että komentosarja on suoritettavissa antamalla seuraava komento.

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

14. Lisää lopuksi cron-työ suorittaaksesi skriptin kahden kuukauden välein keskiyöllä varmistaaksesi, että varmenne päivitetään noin 30 päivän kuluessa ennen sen vanhenemista.

sudo crontab -e

Lisää seuraava rivi tiedoston alaosaan.

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

Se siitä! Nginx-palvelimesi palvelee nyt SSL-sisältöä ilmaisella Let's Encrypt SSL -sertifikaatilla.