SSL (står for secure socket layer) er en webprotokol, der gør trafikken mellem server og klient sikker ved at kryptere den. Server og klienter transmitterer sikkert trafikken uden risiko for, at kommunikation fortolkes af tredjeparter. Det hjælper også klienten med at kontrollere identiteten af det websted, de kommunikerer med.
I dette indlæg vil vi beskrive, hvordan du konfigurerer SSL til Nginx. Vi demonstrerer proceduren ved hjælp af det selvsignerede certifikat. Et selvsigneret certifikat krypterer kun forbindelsen, men validerer ikke serverens identitet. Derfor bør den kun bruges til testmiljøer eller til interne LAN-tjenester. For produktionsmiljøet er det bedre at bruge certifikater underskrevet af CA (certifikatmyndighed).
Forudsætninger
For dette indlæg skal du have følgende forudsætninger:
- Nginx allerede installeret på din maskine
- Serverblok konfigureret til dit domæne
- Bruger med sudo-privilegier
Proceduren forklaret her er blevet udført den Debian 10 (Buster) maskine.
Trin 1: Generering af et selvunderskrevet certifikat
Vores første skridt vil være at generere et selvsigneret certifikat. Udsted nedenstående kommando i Terminal for at generere CSR (Certificate Signing Request) og en nøgle:
$ sudo openssl req -x509 -noder -dage 365 -nykey rsa: 2048 -keyout / etc / ssl / private / selvstændige-nginx.nøgle-ud / etc / ssl / certs / selvstændig-nginx.crtDu bliver bedt om at give nogle oplysninger som dit lands navn, stat, lokalitet, almindelige navn (dit domænenavn eller IP-adresse) og e-mail-adresse.
I ovenstående kommando opretter OpenSSL følgende to filer:
- CSR: selvstændig-nginx.crt i i / etc / ssl / cert / katalog
- Nøgle: selvstændig-nginx.nøgle i / etc / ssl / privat katalog
Opret nu dhparam.pem-fil ved hjælp af nedenstående kommando:
$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048Trin 2: Konfiguration af Nginx til brug af SSL
I det forrige trin har vi oprettet CSR og nøglen. Nu i dette trin konfigurerer vi Nginx til at bruge SSL. Til dette opretter vi et konfigurationsuddrag og tilføjer oplysninger om vores SSL-certifikatfiler og nøgleplaceringer.
Udsted kommandoen nedenfor i Terminal for at oprette et nyt konfigurationsuddrag selvsigneret.conf-fil i / etc / nginx / uddrag.
$ sudo nano / etc / nginx / snippets / selvsigneret.konfTilføj følgende linjer i filen:
ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;ssl_certificate_key / etc / ssl / private / selfsigned-nginx.nøgle;
Det ssl_certificate er indstillet til selvstændig-nginx.crt (certifikatfil), mens ssl_certificate_key er indstillet til selvstændig-nginx.nøgle (nøglefil).
Gem og luk selvsigneret.konf fil.
Nu opretter vi en anden kodestykkefil ssl-params.konf og konfigurer nogle grundlæggende SSL-indstillinger. Udsted kommandoen nedenfor i Terminal for at redigere ssl-params.konf fil:
$ sudo nano / etc / nginx / snippets / ssl-params.konfFøj følgende indhold til 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 gyldige = 300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-beskyttelse "1; mode = blok";
Da vi ikke bruger et CA-signeret certifikat, har vi derfor deaktiveret SSL-hæftning. Hvis du bruger et CA-signeret certifikat, skal du fjerne kommentar til ssl_stapling indgang.
Trin 3: Konfiguration af Nginx til brug af SSL
Nu åbner vi Nginx-serverblokkonfigurationsfilen for at foretage nogle konfigurationer. I dette trin antager vi, at du allerede har konfigureret serverblokken, som ligner denne:
serverlyt 80;
lyt [::]: 80;
rod / var / www / test.org / html;
indeksindeks.html-indeks.htm-indeks.nginx-debian.html;
test af servernavn.org www.prøve.org;
Beliggenhed /
try_files $ uri $ uri / = 404;
For at åbne Nginx-serverblokkonfigurationsfilen skal du bruge nedenstående kommando:
$ sudo nano / etc / nginx / sites-tilgængelig / test.orgRediger nu det eksisterende server blok for at få det til at se sådan ud:
serverlyt 443 ssl;
lyt [::]: 443 ssl;
inkluderer uddrag / selvsigneret.conf;
inkluderer uddrag / ssl-params.conf;
rod / var / www / test.org / html;
indeksindeks.html-indeks.htm-indeks.nginx-debian.html;
test af servernavn.org www.prøve.org;
I ovenstående konfigurationer har vi også tilføjet SSL-uddrag selvsigneret.konf og ssl-params.konf som vi har konfigureret tidligere.
Tilføj derefter en anden server blok.
serverlyt 80;
lyt [::]: 80;
test af servernavn.org www.prøve.org;
returner 302 https: // $ servernavn $ request_uri;
I ovenstående konfiguration, returnere 302 omdirigerer HTTP til HTTPS.
Bemærk: Sørg for at udskifte testen.org med dit eget domænenavn. Gem nu og luk filen.
Trin 4: Tillad SSL-trafik gennem Firewall
Hvis en firewall er aktiveret på dit system, skal du tillade SSL-trafik gennem det. Nginx giver dig tre forskellige profiler med ufw. Du kan se dem ved hjælp af nedenstående kommando i Terminal:
$ sudo ufw app listeDu får vist følgende output med tre profiler til Nginx-trafikken.
Du bliver nødt til at tillade profilen “Nginx Full” i firewallen. For at gøre dette skal du bruge nedenstående kommando:
$ sudo ufw tillader 'Nginx Full'Brug nedenstående kommando for at kontrollere, om profilen er tilladt i firewallen:
$ sudo ufw statusTrin 5: Test NGINX-konfigurationsfil
Test nu Nginx-konfigurationsfilen ved hjælp af nedenstående kommando i Terminal:
$ sudo nginx -tDu skal se nedenstående output.
Opret nu den symbolske forbindelse mellem tilgængelige websteder og aktiverede websteder:
Genstart derefter Nginx-tjenesten for at anvende konfigurationsændringerne. Brug nedenstående kommando til at gøre det:
$ sudo systemctl genstart nginxTrin 6: Test SSL
Nu for at teste SSL skal du navigere til følgende adresse:
https: // domæne-eller-IP-adresse
Da vi har oprettet det selvsignerede certifikat, vil vi derfor se en advarsel om, at forbindelsen ikke er sikker. Den følgende side vises, når du bruger Mozilla Firefox-browseren.
Klik på Fremskreden knap.
Klik på Tilføj undtagelse.
Klik derefter på Bekræft sikkerhedsundtagelse.
Nu vil du se dit HTTPS-sted, men med et advarselsskilt (lås med et gult advarselsskilt) om sikkerheden på dit websted.
Kontroller også, om omdirigering fungerer korrekt ved at få adgang til dit domæne eller IP-adresse ved hjælp af http.
http: // domæne-eller-IP-adresse
Nu, hvis dit websted automatisk omdirigerer til HTTPS, betyder det, at omdirigering fungerede korrekt. For at konfigurere omdirigering permanent skal du redigere serverblokkonfigurationsfilen ved hjælp af nedenstående kommando i Terminal:
$ sudo nano / etc / nginx / sites-tilgængelig / test.orgSkift nu afkastet 302 at vende tilbage 301 i filen, og gem den og luk den.
Sådan kan du konfigurere SSL til Nginx i Debian 10-systemet. Vi har oprettet det selvsignerede certifikat til demonstration. Hvis du er i et produktionsmiljø, skal du altid vælge et CA-certifikat.