Android

Suojaa nginx salaamalla sentos 7

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 annamme vaiheittaiset ohjeet siitä, kuinka Nginx voidaan suojata Let's Encrypt -sovelluksella käyttämällä Certbot-työkalua CentOS 7: ssä.

edellytykset

Varmista, että olet täyttänyt seuraavat ehdot, ennen kuin jatkat tätä opastusta:

  • Sinulla on verkkotunnus, joka osoittaa julkisen palvelimen IP-osoitteeseen. Tässä oppaassa käytämme example.com . Olet ottanut EPEL-arkiston käyttöön ja asentanut Nginxin noudattamalla ohjeita Nginxin asentamisesta CentOS 7: ään.

Asenna Certbot

Certbot on helppokäyttöinen työkalu, joka voi automatisoida Let's Encrypt SSL -sertifikaattien hankkimisen ja uusimisen sekä web-palvelimien määrittämisen.

Asennaksesi sertbot-paketin EPEL-arkiston ajossa:

sudo yum install certbot

Luo vahva Dh (Diffie-Hellman) -ryhmä

Diffie – Hellman-avaintenvaihto (DH) on menetelmä salausavainten vaihtamiseksi turvallisesti suojaamattoman tietoliikennekanavan kautta.

Luo uusi joukko 2048-bittisiä DH-parametreja kirjoittamalla seuraava komento:

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.

Yksinkertaistamiseksi aiomme kartoittaa kaikki. Hyvin .well-known/acme-challenge HTTP-pyynnöt yhteen hakemistoon, /var/lib/letsencrypt .

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

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Koodin päällekkäisyyksien välttämiseksi luo seuraavat kaksi katkelmaa, jotka aiomme sisällyttää kaikkiin Nginx-palvelinlohkotiedostoihimme:

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

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

Yllä oleva katkelma sisältää Mozillan suosittelemat hakkurit, mahdollistaa OCSP-nidonnan, HTTP-tiukan liikenneturvallisuuden (HSTS) ja valvoo muutamaa tietoturvallisuuteen keskittynyttä

Kun katkelmat on luotu, avaa verkkotunnuspalvelinlohko ja sisällytä letsencrypt.conf katkelma seuraavasti:

/etc/nginx/conf.d/example.com.conf

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

Lataa Nginx-kokoonpano uudelleen, jotta muutokset tulevat voimaan:

sudo systemctl reload nginx

Voit nyt suorittaa Certbotin webroot-laajennuksella ja hankkia verkkotunnuksesi SSL-varmennetiedostot myöntämällä:

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, certbot tulostaa seuraavan viestin:

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-06-11. 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" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Nyt kun sinulla on varmennetiedostot, voit muokata verkkotunnuksen palvelinlohkoa seuraavasti:

/etc/nginx/conf.d/example.com.conf

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: n ei-www-versioon.

Lataa lopuksi 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ää. Jotta uusimme varmenteet automaattisesti ennen niiden voimassaolon päättymistä, luomme joukkojoukon, joka suoritetaan kahdesti päivässä ja uusitaan varmenteet automaattisesti 30 päivää ennen niiden voimassaolon päättymistä.

Suorita crontab komento luodaksesi uuden cronjob:

sudo crontab -e

Liitä seuraavat rivit:

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"

Tallenna ja sulje tiedosto.

Voit testata uusimisprosessin käyttämällä certbot-komentoa, jota seuraa --dry-run kytkin:

sudo certbot renew --dry-run

Jos virheitä ei ole, se tarkoittaa, että testin uusimisprosessi onnistui.

johtopäätös

Tässä opetusohjelmassa latasit verkkotunnuksesi SSL-varmenteet Let's Encrypt -asiakassertifikaatin avulla. 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 centos salattava certbot ssl

Tämä viesti on osa Install LEMP Stack -sovellusta CentOS 7 -sarjassa.

Muut tämän sarjan viestit:

• Kuinka asentaa Nginx CentOS 7: ään • Suojaa Nginx salauksella CentOS 7: llä • Asenna MariaDB CentOS 7: ään • Asenna PHP 7 CentOS 7: ään • Kuinka Nginx-palvelinlohkot asennetaan CentOS 7: lle