SSL (står for secure socket layer) er en webprotokoll som gjør trafikken mellom server og klient sikker ved å kryptere den. Server og klienter overfører trafikken trygt uten at risikoen for kommunikasjon tolkes av tredjeparter. Det hjelper også klienten med å verifisere identiteten til nettstedet de kommuniserer med.
I dette innlegget vil vi beskrive hvordan du konfigurerer SSL for Nginx. Vi vil demonstrere prosedyren ved hjelp av det selvsignerte sertifikatet. Et selvsignert sertifikat krypterer bare tilkoblingen, men validerer ikke identiteten til serveren din. Derfor bør den bare brukes til testmiljøer eller for interne LAN-tjenester. For produksjonsmiljøet er det bedre å bruke sertifikatene signert av CA (sertifikatmyndighet).
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
Fremgangsmåten som er forklart her er utført på Debian 10 (Buster) maskin.
Trinn 1: Generere et selvsignert sertifikat
Vårt første skritt vil være å generere et selvsignert sertifikat. Gi kommandoen nedenfor i Terminal for å generere CSR (Certificate Signing Request) og en nøkkel:
$ sudo openssl req -x509 -noder -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / selvstendig-nginx.key -out / etc / ssl / certs / selvstendig-nginx.crtDu blir bedt om å oppgi litt informasjon som landnavn, stat, lokalitet, fellesnavn (domenenavn eller IP-adresse) og e-postadresse.
I kommandoen ovenfor vil OpenSSL opprette følgende to filer:
- CSR: selvstendig-nginx.crt i i / etc / ssl / cert / katalog
- Nøkkel: selvstendig-nginx.nøkkel i / etc / ssl / privat katalog
Lag nå dhparam.pem-fil ved hjelp av kommandoen nedenfor:
$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048Trinn 2: Konfigurere Nginx til å 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 en konfigurasjonskutt og legge til informasjon om SSL-sertifikatfiler og nøkkelplasser.
Gi kommandoen nedenfor i Terminal for å opprette et nytt konfigurasjonsutdrag selvsignert.conf-fil i / etc / nginx / snippets.
$ sudo nano / etc / nginx / snippets / selvsignert.konfLegg til følgende linjer i filen:
ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;ssl_certificate_key / etc / ssl / private / selfsigned-nginx.nøkkel;
De ssl_certificate er satt til selvstendig-nginx.crt (sertifikatfil) mens ssl_certificate_key er satt til selvstendig-nginx.nøkkel (nøkkelfil).
Lagre og lukk selvsignert.konf fil.
Nå vil vi opprette en ny kodefil ssl-params.konf og konfigurer noen grunnleggende SSL-innstillinger. Gi ut kommandoen nedenfor i Terminal for å redigere ssl-params.konf fil:
$ sudo nano / etc / nginx / snippets / ssl-params.konfLegg 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-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES25;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache delt: SSL: 10m;
ssl_session_tickets off;
# ssl_stapling på;
# ssl_stapling_verify på;
resolver 8.8.8.8 8.8.4.4 gyldig = 300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-beskyttelse "1; mode = block";
Siden vi ikke bruker et CA-signert sertifikat, har vi derfor deaktivert SSL-stifting. Hvis du bruker et CA-signert sertifikat, må du fjerne kommentaren til ssl_stapling inngang.
Trinn 3: Konfigurere Nginx til å bruke SSL
Nå åpner vi konfigurasjonsfilen for Nginx-serverblokk for å gjøre noen konfigurasjoner. I dette trinnet vil vi anta at du allerede har konfigurert serverblokken, som vil ligne på dette:
serverhør 80;
hør [::]: 80;
rot / 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 konfigurasjonsfilen for Nginx-serverblokk, bruk kommandoen nedenfor:
$ sudo nano / etc / nginx / nettsteder-tilgjengelig / test.orgEndre nå det eksisterende server blokker for å få det til å se slik ut:
serverhør 443 ssl;
hør [::]: 443 ssl;
inkluderer utdrag / selvsignert.conf;
inkluderer utdrag / ssl-params.conf;
rot / 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-kodebitene selvsignert.konf og ssl-params.konf som vi har konfigurert tidligere.
Deretter legger du til en andre server blokkere.
serverhør 80;
hør [::]: 80;
server_name test.org www.test.org;
returner 302 https: // $ servernavn $ request_uri;
I konfigurasjonen ovenfor, retur 302 omdirigerer HTTP til HTTPS.
Merk: Sørg for å bytte ut testen.org med ditt eget domenenavn. Lagre og lukk filen.
Trinn 4: Tillat SSL-trafikk gjennom brannmur
Hvis en brannmur er aktivert på systemet ditt, må du tillate SSL-trafikk gjennom den. Nginx gir deg tre forskjellige profiler med ufw. Du kan se dem ved å bruke kommandoen nedenfor i Terminal:
$ sudo ufw applisteDu vil se følgende utdata med tre profiler for Nginx-trafikken.
Du må tillate "Nginx Full" -profilen i brannmuren. For å gjøre dette, bruk kommandoen nedenfor:
$ sudo ufw tillater 'Nginx Full'For å bekrefte om profilen er tillatt i brannmuren, bruk kommandoen nedenfor:
$ sudo ufw statusTrinn 5: Test NGINX-konfigurasjonsfilen
Test nå Nginx-konfigurasjonsfilen ved å bruke kommandoen nedenfor i Terminal:
$ sudo nginx -tDu bør se utdataene nedenfor.
Opprett nå den symbolske lenken mellom tilgjengelige sider og nettsteder-aktiverte:
Start deretter Nginx-tjenesten på nytt for å bruke konfigurasjonsendringene. Bruk kommandoen nedenfor for å gjøre det:
$ sudo systemctl start nginx på nyttTrinn 6: Test SSL
Nå for å teste SSL, naviger til følgende adresse:
https: // domene-eller-IP-adresse
Da vi har satt opp det selvsignerte sertifikatet, vil vi derfor se en advarsel om at forbindelsen ikke er sikker. Den neste siden 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 viderekoblingen fungerer riktig ved å få tilgang til domenet eller IP-adressen din ved hjelp av http.
http: // domene-eller-IP-adresse
Nå, hvis nettstedet ditt omdirigerer automatisk til HTTPS, betyr dette at viderekobling fungerte riktig. For å konfigurere omdirigering permanent, rediger konfigurasjonsfilen for serverblokken ved hjelp av kommandoen nedenfor i Terminal:
$ sudo nano / etc / nginx / nettsteder-tilgjengelig / test.orgEndre nå returen 302 å returnere 301 i filen og deretter lagre og lukke den.
Slik kan du sette opp SSL for Nginx i Debian 10-systemet. Vi har satt opp det selvsignerte sertifikatet for demonstrasjon. Hvis du er i et produksjonsmiljø, må du alltid søke etter et CA-sertifikat.