10 Tips for Deploying NGINX as an API Gateway
Innholdsfortegnelse:
- Forutsetninger
- Installer Certbot
- Generer Strong Dh (Diffie-Hellman) -gruppen
- Innhenting av et Let's Encrypt SSL-sertifikat
- SSL-sertifikat automatisk fornyelse
- Konklusjon
Let's Encrypt er en gratis og åpen sertifikatmyndighet utviklet av Internet Security Research Group (ISRG). Sertifikater utstedt av Let's Encrypt er klarert av nesten alle nettlesere i dag.
I denne opplæringen gir vi trinnvise instruksjoner om hvordan du sikrer din Nginx med Let's Encrypt ved å bruke certbot-verktøyet på Ubuntu 16.04.
Forutsetninger
Forsikre deg om at du har oppfylt følgende forutsetninger før du fortsetter med denne opplæringen:
- Du har et domenenavn som peker til din offentlige server-IP. I denne opplæringen vil vi bruke
example.com
Du har Nginx installert ved å følge Hvordan installere Nginx på Ubuntu 16.04.
Installer Certbot
Certbot er et verktøy skrevet i python som kan automatisere oppgavene for å skaffe og fornye Let's Encrypt SSL-sertifikater og konfigurere webservere.
Installer først
software-properties-common
pakken som inneholder
add-apt-repository
verktøyet som trengs for å legge til flere PPA-er.
Oppdater pakkeindeksen og installer
software-properties-common
med:
sudo apt update
sudo apt install software-properties-common
Når installasjonen er fullført, legger du certbot PPA-repository til systemet ditt ved hjelp av følgende kommando:
sudo add-apt-repository ppa:certbot/certbot
Oppdater pakkelisten og installer certbot-pakken:
sudo apt update
sudo apt install certbot
Generer Strong Dh (Diffie-Hellman) -gruppen
Diffie – Hellman nøkkelutveksling (DH) er en metode for sikker utveksling av kryptografiske nøkler over en usikret kommunikasjonskanal. Generer et nytt sett med 2048 bit DH-parametere for å styrke sikkerheten:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Hvis du vil, kan du endre størrelsen opp til 4096 biter, men i så fall kan generasjonen ta mer enn 30 minutter avhengig av systemets entropi.
Innhenting av et Let's Encrypt SSL-sertifikat
For å få et SSL-sertifikat for domenet vårt, bruker vi Webroot-plugin som fungerer ved å lage en midlertidig fil for å validere det forespurte domenet i
${webroot-path}/.well-known/acme-challenge
katalogen. Let's Encrypt-serveren sender HTTP-forespørsler til den midlertidige filen for å bekrefte at det forespurte domenet løses til serveren der certbot kjører.
For å gjøre det enklere skal vi kartlegge alle HTTP-forespørsler for
.well-known/acme-challenge
til en enkelt katalog,
/var/lib/letsencrypt
.
Følgende kommandoer lager katalogen og gjør den skrivbar for Nginx-serveren.
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
For å unngå duplisering av kode, opprett følgende to kodebiter som vi skal inkludere i alle Nginx-serverblokkfilene.
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;
Utdraget over inkluderer anbefaling av flishuggere fra Mozilla, muliggjør OCSP-stifting, HTTP Strict Transport Security (HSTS) og håndhever få sikkerhetsfokuserte
Når kodebitene er opprettet, åpner du domeneserverblokken og inkluderer
letsencrypt.conf
utdraget som vist nedenfor:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Aktiver serverblokken ved å opprette en symbolsk lenke fra
sites-available
for
sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Last inn Nginx-konfigurasjonen på nytt for at endringene skal tre i kraft:
sudo systemctl reload nginx
Kjør certbot-skriptet med webroot-plugin og skaff SSL-sertifikatfilene:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Hvis SSL-sertifikatet er oppnådd, skriver certbot ut følgende melding:
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-04-23. 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:
Nå som vi har sertifikatfilene, rediger du domeneserverblokken som følger:
/etc/nginx/sites-available/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 }
Med konfigurasjonen over tvinger vi HTTPS og omdirigerer
www
versjonen av domenet til
non www
versjonen.
Last inn Nginx-tjenesten på nytt for at endringer skal tre i kraft:
SSL-sertifikat automatisk fornyelse
Let's Encrypts sertifikater er gyldige i 90 dager. For å automatisk fornye sertifikatene før de utløper, oppretter certbot-pakken en cronjob som kjøres to ganger om dagen og vil automatisk fornye ethvert sertifikat 30 dager før utløpet.
Siden vi bruker certbot webroot-plugin-modulen når sertifikatet er fornyet, må vi også laste inn nginx-tjenesten på nytt. For å gjøre det, legg til -
--renew-hook "systemctl reload nginx"
til filen
--renew-hook "systemctl reload nginx"
slik at den ser slik ut:
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"
For å teste fornyelsesprosessen bruker du certbot -
--dry-run
:
sudo certbot renew --dry-run
Hvis det ikke er noen feil, betyr det at fornyelsesprosessen var vellykket.
Konklusjon
I denne opplæringen brukte du Let's Encrypt-klienten, certbot for å skaffe SSL-sertifikater for domenet ditt. Du har også opprettet Nginx-utdrag for å unngå kodeduplisering og konfigurert Nginx til å bruke sertifikatene. På slutten av opplæringen har du satt opp en cronjob for automatisk fornyelse av sertifikater.
nginx ubuntu la oss kryptere certbot sslSikre nginx med la oss kryptere på centos 7

I denne opplæringen gir vi trinnvise instruksjoner om hvordan du sikrer din Nginx med Let's Encrypt ved å bruke certbot-verktøyet på CentOS 7
Sikre nginx med la oss kryptere på debian 9

I denne opplæringen vil vi forklare hvordan du bruker Certbot-verktøyet for å skaffe et gratis SSL-sertifikat for Nginx på Debian 9. Vi vil også vise hvordan du konfigurerer Nginx til å bruke SSL-sertifikatet og aktivere HTTP / 2.
Sikre nginx med la oss kryptere på ubuntu 18.04

Let's Encrypt er en gratis og åpen sertifikatmyndighet utviklet av Internet Security Research Group. I denne opplæringen vil vi gi trinnvise instruksjoner om hvordan du sikrer din Nginx med Let's Encrypt ved å bruke certbot-verktøyet på Ubuntu 18.04