Nginx SSL -oppsett i Linux

Nginx SSL -oppsett i Linux

SSL (står for Secure Socket Layer) er en nettprotokoll som gjør trafikken mellom server og klient sikker ved å kryptere den. Server og klienter overfører trygt trafikken uten risiko for at kommunikasjon blir tolket av tredjeparter. Det hjelper også klienten med å bekrefte identiteten til nettstedet de kommuniserer med.

I dette innlegget vil vi beskrive hvordan du konfigurerer SSL for Nginx. Vi vil demonstrere prosedyren ved å bruke det selvsignerte sertifikatet. Et selvsignert sertifikat krypterer bare forbindelsen, men validerer ikke identiteten til serveren din. Derfor bør det bare brukes til testmiljøer eller for interne LAN -tjenester. For produksjonsmiljøet er det bedre å bruke sertifikatene signert av CA (Certificate Authority).

Forutsetninger

For dette innlegget bør du ha følgende forutsetninger:

  • Nginx allerede installert på maskinen din
  • Serverblokk konfigurert for domenet ditt
  • Bruker med sudo -privilegier

Prosedyren forklart her er utført på Debian 10 (Buster) maskin.

Trinn 1: Generere et selvsignert sertifikat

Vårt første trinn vil være å generere et selvsignert sertifikat. Utsted kommandoen nedenfor i terminalen for å generere CSR (Certificate Siging Request) og en nøkkel:

$ sudo openssl req -x509 -nodes -dager 365 -NewKey RSA: 2048 -Keyout/etc/SSL/Private/SelfSigned -Nginx.nøkkel -out/etc/ssl/certs/selfsigned -nginx.crt

Du blir bedt om å oppgi litt informasjon som ditt landsnavn, stat, lokalitet, vanlig navn (ditt domenenavn eller IP -adresse) og e -postadresse.

I kommandoen ovenfor vil OpenSSL opprette følgende to filer:

  • CSR: selvsignert-nginx.crt i i /etc/ssl/cert/katalog
  • Nøkkel: selvsignert-nginx.nøkkel i /etc/ssl/privat katalog

Nå opprette Dhparam.PEM -fil Bruke kommandoen nedenfor:

$ sudo OpenSSL Dhparam -out/etc/ssl/certs/dhparam.PEM 2048

Trinn 2: Konfigurere Nginx for å bruke SSL

I forrige trinn har vi opprettet CSR og nøkkelen. Nå i dette trinnet vil vi konfigurere Nginx til å bruke SSL. For dette vil vi lage et konfigurasjonsutdrag og legge til informasjon om våre SSL -sertifikatfiler og nøkkelplasser.

Utsted kommandoen nedenfor i terminalen for å opprette et nytt konfigurasjonsutdrag Selvsignert.Conf -fil i /etc/nginx/utdrag.

$ sudo nano/etc/nginx/utdrag/selvsignert.konf

I filen, legg til følgende linjer:

ssl_certificate/etc/ssl/certs/selfsigned-nginx.CRT;
ssl_certificate_key/etc/ssl/privat/selvsignert-nginx.nøkkel;

De ssl_certificate er satt til selvsignert-nginx.crt (sertifikatfil) Mens ssl_certificate_key er satt til selvsignert-nginx.nøkkel (nøkkelfil).

Spar og lukk Selvsignert.konf fil.

Nå oppretter vi en annen utdrag -fil SSL-params.konf og konfigurere noen grunnleggende SSL -innstillinger. Utsted kommandoen nedenfor i terminalen for å redigere SSL-params.konf fil:

$ sudo nano/etc/nginx/utdrag/ssl-params.konf

Legg til følgende innhold i filen:

SSL_Protocols TLSV1.2;
SSL_PREFER_SERVER_CIPHERS ON;
ssl_dhparam/etc/ssl/certs/dhparam.Pem;
SSL_CIPHERS ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-S-S-SHA384: ECDHE-RSA-AES256-GCM-Sha384: ECDHA-RSA-ASA-AES256-GCM-Sha384;
SSL_ECDH_CURVE SECP384R1;
SSL_SESSION_TIMEOUT 10M;
ssl_session_cache delt: ssl: 10m;
SSL_SESSION_TICKESS OFF;
# ssl_stapling på;
# ssl_stapling_verify on;
Resolver 8.8.8.8 8.8.4.4 gyldig = 300 -tallet;
Resolver_timeout 5s;
add_header X-Frame-Options nektet;
add_header x-content-type-options nosniff;
add_header x-xss-beskyttelse "1; modus = blokk";

Siden vi ikke bruker et CA-signert sertifikat, har vi derfor deaktivert SSL-stiften. Hvis du bruker et CA-signert sertifikat, må du ikke gjøre ssl_stapling inngang.

Trinn 3: Konfigurere Nginx for å bruke SSL

Nå åpner vi Nginx Server Block -konfigurasjonsfilen for å lage noen konfigurasjoner. I dette trinnet vil vi anta at du allerede har satt opp serverblokken, som vil være lik dette:

server
Lytt 80;
Hør [::]: 80;
root/var/www/test.org/html;
Indeksindeks.HTML -indeks.HTM -indeks.Nginx-Debian.html;
Server_name Test.org www.test.org;
plassering /
Try_files $ uri $ uri/ = 404;

For å åpne Nginx Server Block -konfigurasjonsfilen, bruk kommandoen nedenfor:

$ sudo nano/etc/nginx/nettsteder-tilgjengelig/test.org

Nå endre eksisterende server Blokker for å få det til å se slik ut:

server
Lytt 443 SSL;
Hør [::]: 443 SSL;
Inkluder utdrag/selvsignet.Conf;
inkluderer utdrag/SSL-params.Conf;
root/var/www/test.org/html;
Indeksindeks.HTML -indeks.HTM -indeks.Nginx-Debian.html;
Server_name Test.org www.test.org;

I konfigurasjonene ovenfor har vi også lagt til SSL -utdragene Selvsignert.konf og SSL-params.konf som vi har konfigurert tidligere.

Neste, legg til en Andre server blokkere.

server
Lytt 80;
Hør [::]: 80;
Server_name Test.org www.test.org;
return 302 https: // $ server_name $ request_uri;

I konfigurasjonen ovenfor, Return 302 omdirigerer http til https.

Merk: Sørg for å erstatte testen.org med ditt eget domenenavn. Lagre og lukk filen nå.

Trinn 4: Tillat SSL -trafikk gjennom brannmur

Hvis en brannmur er aktivert på systemet ditt, må du tillate SSL -trafikk gjennom det. Nginx gir deg tre forskjellige profiler med UFW. Du kan se dem ved å bruke kommandoen nedenfor i terminalen:

$ sudo ufw appliste

Du vil se følgende utgang med tre profiler for Nginx -trafikken.

Du må tillate “Nginx Full” -profilen i brannmuren. For å gjøre det, bruk kommandoen nedenfor:

$ sudo ufw tillater 'nginx full'

For å bekrefte om profilen er tillatt i brannmuren, bruk kommandoen nedenfor:

$ sudo ufw status

Trinn 5: Test Nginx -konfigurasjonsfilen

Test nå Nginx -konfigurasjonsfilen ved å bruke kommandoen nedenfor i terminalen:

$ sudo nginx -t

Du bør se utdataene nedenfor.


Lag nå den symbolske koblingen mellom nettsteder tilgjengelig og nettsted-aktivert:

$ ln -s/etc/nginx/nettsteder -tilgjengelig/test.com/etc/nginx/nettsteder-aktivert/

Start deretter NGINX -tjenesten på nytt for å bruke konfigurasjonsendringene. Bruk kommandoen nedenfor for å gjøre det:

$ sudo SystemCTL Restart Nginx

Trinn 6: Test SSL

Nå for å teste SSL, navigerer du til følgende adresse:

https: // domain-or-IP-adresse

Når vi har satt opp det selvsignerte sertifikatet, vil vi derfor se en advarsel om at forbindelsen ikke er sikker. Følgende side vises når du bruker Mozilla Firefox -nettleseren.

Klikk på Avansert knapp.

Klikk Legg til unntak.

Klikk deretter Bekreft sikkerhets unntak.

Nå vil du se HTTPS -nettstedet ditt, men med et advarselsskilt (lås med et gult advarselsskilt) om sikkerheten til nettstedet ditt.

Sjekk også om omdirigering fungerer riktig ved å få tilgang til domenet eller IP -adressen din ved hjelp av HTTP.

http: // domain-or-IP-adresse

Nå, hvis nettstedet ditt automatisk omdirigerer til HTTPS, betyr dette at omdirigering fungerte riktig. For å konfigurere omdirigering permanent, rediger serverblokkkonfigurasjonsfilen ved å bruke kommandoen nedenfor i terminalen:

$ sudo nano/etc/nginx/nettsteder-tilgjengelig/test.org

Bytt nå returen 302 å returnere 301 i filen og lagrer og lukker den deretter.

Det er slik du kan sette opp SSL for Nginx i Debian 10 System. Vi har satt opp det selvsignerte sertifikatet for demonstrasjon. Hvis du er i et produksjonsmiljø, må du alltid gå til et CA -sertifikat.