Android

Suojaa nginx salaamalla debian 9

Anneli Mattila - Suojaan

Anneli Mattila - Suojaan

Sisällysluettelo:

Anonim

Let's Encrypt on ilmainen ja avoin sertifikaattien myöntäjä, jonka on kehittänyt Internet Security Research Group (ISRG). Lähes kaikki selaimet luottavat tänään Let's Encryptin myöntämiin varmenteisiin.

Tässä opetusohjelmassa selitetään kuinka käyttää Certbot-työkalua ilmaisen SSL-varmenteen saamiseen Nginxille Debian 9: ssä. Osoitamme myös, kuinka Nginx määritetään käyttämään SSL-varmennetta ja ottamaan käyttöön HTTP / 2.

edellytykset

Varmista ennen tämän oppaan jatkamista, että seuraavat edellytykset täyttyvät:

  • Sisäänkirjautuneena käyttäjänä, jolla on sudo-oikeudet.On verkkotunnus osoittanut julkisen palvelimen IP-osoitteeseen. Käytämme example.com .On Nginx asennettu seuraavien ohjeiden mukaisesti. Sinulla on palvelinlohko verkkotunnuksellesi. Seuraa näitä ohjeita saadaksesi lisätietoja sen luomisesta.

Asenna Certbot

Certbot on täysin varusteltu ja helppokäyttöinen työkalu, joka pystyy automatisoimaan Let's Encrypt SSL -varmenteiden hankkimista ja uusimista sekä web-palvelimien määrittämistä varmenteita varten. Certbot-paketti sisältyy Debianin oletusvarastoihin.

Päivitä pakettiluettelo ja asenna certbot-paketti:

sudo apt update sudo apt install certbot

Luo vahva Dh (Diffie-Hellman) -ryhmä

Diffie – Hellman-avaintenvaihto (DH) on menetelmä salausavainten vaihtamiseksi turvallisesti suojaamattoman tietoliikennekanavan kautta. Aiomme luoda uuden sarjan 2048-bittisiä DH-parametreja turvallisuuden parantamiseksi:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Jos haluat, voit muuttaa kokoa 4096 bittiin saakka, mutta tällöin luominen voi viedä yli 30 minuuttia järjestelmän entropiasta riippuen.

Salamme SSL-varmenteen

Saadaksemme verkkotunnuksellemme SSL-sertifikaatin käytämme Webroot-laajennusta, joka toimii luomalla väliaikainen tiedosto ${webroot-path}/.well-known/acme-challenge verkkotunnuksen validoimiseksi ${webroot-path}/.well-known/acme-challenge hakemistossa ${webroot-path}/.well-known/acme-challenge . Let's Encrypt -palvelin tekee HTTP-pyyntöjä väliaikaiseen tiedostoon vahvistaakseen, että pyydetty verkkotunnus ratkaisee palvelimelle, jossa certbot toimii.

/var/lib/letsencrypt .well-known/acme-challenge /var/lib/letsencrypt HTTP-pyynnöt yhteen hakemistoon, /var/lib/letsencrypt .

Seuraavat komennot luovat hakemiston ja tekevät siitä kirjoitettavan Nginx-palvelimelle.

mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt

Koodin päällekkäisyyksien välttämiseksi luo seuraavat kaksi katkelmaa, jotka sisällytetään kaikkiin Nginx-palvelinlohkotiedostoihimme.

Avaa tekstieditori ja luo ensimmäinen katkelma, letsencrypt.conf :

sudo nano /etc/nginx/snippets/letsencrypt.conf /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }

Luo toinen katkelma ssl.conf joka sisältää Mozillan suosittelemat hakkurit, mahdollistaa OCSP-nidonnan, HTTP-tiukan liikenneturvallisuuden (HSTS) ja valvoo muutamaa tietoturvallisuuteen keskittynyttä

sudo nano /etc/nginx/snippets/ssl.conf /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;

Kun olet valmis, avaa verkkotunnuksen palvelinlohkotiedosto ja sisällytä letsencrypt.conf katkelma alla esitetyllä tavalla:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

Ota uusi palvelinlohko käyttöön luomalla symbolinen linkki sites-enabled hakemistoon:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Käynnistä Nginx-palvelu uudelleen, jotta muutokset tulevat voimaan:

sudo systemctl restart nginx

Voit nyt suorittaa Certbotin webroot-laajennuksella ja hankkia SSL-varmennetiedostot antamalla:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Jos SSL-varmenne saadaan onnistuneesti, seuraava viesti tulostetaan päätteellesi:

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-07-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Muokkaa seuraavaksi verkkotunnuksen palvelinlohko seuraavasti:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com

server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }

Yllä olevalla kokoonpanolla pakotamme HTTPS: n ja ohjaamme www-osoitteesta muuhun kuin www-versioon.

Lataa Nginx-palvelu uudelleen, jotta muutokset tulevat voimaan:

sudo systemctl reload nginx

Automaattinen uusiminen Let's Encrypt SSL -varmenne

Salatko varmenteet ovat voimassa 90 päivää. Voit uusia sertifikaatit automaattisesti ennen niiden voimassaolon päättymistä. Certbot-paketti luo cronjobin, joka suoritetaan kahdesti päivässä ja uusii sertifikaatin automaattisesti 30 päivää ennen sen voimassaolon päättymistä.

Koska käytämme certbot-webroot-laajennusta varmenteen uusimisen jälkeen, meidän on myös ladattava nginx-palvelu uudelleen. Lisää --renew-hook "systemctl reload nginx" tiedostoon /etc/cron.d/certbot niin, että se näyttää tältä:

sudo nano /etc/cron.d/certbot /etc/cron.d/certbot

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"

Testaa automaattinen uusimisprosessi suorittamalla tämä komento:

sudo certbot renew --dry-run

Jos virheitä ei ole, uusimisprosessi onnistui.

johtopäätös

SSL-sertifikaatin hankkiminen on nykyään välttämätöntä. Se turvaa verkkosivustosi, lisää SERP: n sijoituspaikkaa ja sallii HTTP / 2: n käyttöönoton Web-palvelimella.

Tässä opetusohjelmassa käytit Let's Encrypt -asiakassertifikaattia luomalla verkkotunnuksesi SSL-varmenteet. Olet myös luonut Nginx-katkelmat koodin päällekkäisyyksien välttämiseksi ja määrittänyt Nginxin käyttämään varmenteita. Oppitunnin lopussa olet asettanut cronjob-sertifikaatin automaattiseen uusimiseen.

nginx debian salattava certbot ssl

Tämä viesti on osa Kuinka asentaa LEMP-pino Debian 9 -sarjaan.

Muut tämän sarjan viestit:

• Kuinka asentaa MariaDB Ubuntu 18.04 -versioon • Kuinka asentaa Nginx Debian 9 -käyttöjärjestelmään • Kuinka asentaa PHP Debian 9 -käyttöjärjestelmään • Kuinka Nginx-palvelinlohkot asentaa Debian 9: ään • Suojaa Nginx suojaamalla Debian 9 -sovellus