Hvordan aktivere SSL på NGINX

Bilde: Jack Wallen

Secure Sockets Layer (SSL) har blitt en nødvendighet for webservere. Hvorfor? Fordi sikkerhet er blitt tvunget i søkelyset, og hvert selskap står nå overfor det faktum at webserveren deres må tjene opp innhold på en sikker måte.

Datasenter må leses

  • 8 datasenterprognoser for 2020
  • 7 nettverksvarslinger for 2020: Automatisering, edge computing, Wi-Fi 6, mer
  • Beste praksis for server virtualisering og tips om hva du ikke skal gjøre
  • Kvanteberegning: Syv sannheter du trenger å vite

Til det må du gjøre bruk av SSL. Hvis du tilfeldigvis jobber med NGINX, er du heldig, siden prosessen er ganske mulig (men litt komplisert).

Jeg vil lede deg gjennom trinnene for å aktivere SSL på en Ubuntu Server 18.04, som kjører NGINX. Jeg vil demonstrere dette med et selvsignert sertifikat, men et sertifikat fra en offisiell Certificate Authority (CA) er et mye bedre valg. Faktisk bør du bruke det selvsignerte sertifikatet bare som et middel for testformål.

Hva trenger du

For å oppnå dette, trenger du NGINX som kjører på Ubuntu Server 18.04, med et selvsignert sertifikat som klart. Jeg antar at du allerede har Ubuntu og NGINX i gang. Vi går gjennom prosessen med å opprette det selvsignerte sertifikatet.

Selvsignert sertifikat

Det første trinnet er å generere ditt selvsignerte sertifikat. For å gjøre dette, logg inn på serveren din og send ut følgende kommando:

 sudo openssl req -x509 -noder -dager 365 -nøkkelkey ​​rsa: 2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt 

Du vil bli stilt noen spørsmål (for eksempel landnavn, stat, lokalitet osv.). Det viktigste svaret er Common Name. For dette spørsmålet, svar med serverens IP-adresse ( figur A ).

Figur A

Konfigurere det vanlige navnet med en IP-adresse.


Når kommandoen er fullført, vil de nødvendige filene bli lagt til i / etc / ssl- katalogen og er klar til bruk.

Konfigurer NGINX

Nå må vi konfigurere NGINX for å bruke SSL. Lag først en ny konfigurasjonsavdragsfil med kommandoen:

 sudo nano /etc/nginx/snippets/self-signed.conf 

I den nye filen legger du til følgende innhold:

 ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; 

Lagre og lukk den filen.

Deretter oppretter du et nytt konfigurasjonsutdrag som peker til vår nylig genererte SSL-nøkkel og sertifikat. For å gjøre dette, gi kommandoen:

 sudo nano /etc/nginx/snippets/ssl-params.conf 

I den nye filen legger du til følgende innhold:

 ssl_protocols TLSv1.2; ssl_prefer_server_ciphers på; 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-A25; ssl_ecdh_curve secp384r1; # Krever nginx> = 1.1.0 ssl_session_timeout 10m; ssl_session_cache delt: SSL: 10m; ssl_session_tickets off; # Krever nginx> = 1.5.9 # ssl_stapling på; # Krever nginx> = 1.3.7 # ssl_stapling_verify på; # Krever nginx => 1.3.7 resolver 8.8.8.8 8.8.4.4 valid = 300s; resolver_timeout 5s; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode = block"; 

Fordi vi bruker et selvsignert sertifikat, deaktiverer vi SSL-stifting (en metode for raskt og trygt å bestemme om et SSL-sertifikat er gyldig eller ikke). Hvis du ikke bruker et selvsignert sertifikat, må du fjerne #-symbolene før de to linjene. Du kan også endre resolveringslinjen for å gjenspeile de foretrukne DNS-serverne dine. Lagre og lukk den filen.

Vi må også generere dhparam.pem-filen med kommandoen:

 sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 

Kommandoen ovenfor vil ta litt tid.

Neste trinn er å konfigurere NGINX til å være klar over at vi kommer til å bruke SSL. La oss anta at du har en serverblokk for eksempel.com på nettsteder som er tilgjengelige. Åpne den serverblokken med kommandoen:

 sudo nano /etc/nginx/sites-available/example.com 

Rediger den i denne filen for å gjenspeile følgende:

 server {listen 443 ssl; hør ::: 443 ssl; inkluderer tekstutdrag / selvsignert.conf; inkluderer utdrag / ssl-params.conf; servernavn eksempel.com www.eksempel.com; root /var/www/example.com/html; index index.html index.htm index.nginx-debian.html; } 

Nedenfor legger du til en ny serverblokk (for å utføre en HTTPS-viderekobling) slik:

 server {hør 80; hør ::: 80; servernavn eksempel.com www.eksempel.com; returner 302 https: // $ servernavn $ request_uri; } 

Til slutt må vi koble fra nettsteder som er tilgjengelige til nettsteder som er aktivert med kommandoen:

 ln -s /etc/nginx/sites-available/www.example.com / etc / nginx / sites-enabled / 

Sjekk profilene

Ved hjelp av ufw kan vi sjekke våre nye SSL-aktiverte profiler med kommandoen:

 sudo ufw appliste 

Dette skulle tydelig vise at NGINX HTTPS er aktivert ( figur B ).

Figur B

NGINX HTTPS er klar.


Start NGINX på nytt med kommandoen:

 sudo systemctl omstart nginx 

Du skal nå kunne peke en nettleser til https: // SERVER_IP (der SERVER_IP er IP-adressen til serveren din) og se (fordi vi bruker et selvsignert sertifikat) en advarsel om sikkerheten til sertifikatet ( figur C ).

Figur C

Firefox som indikerer at nettstedet kanskje ikke er sikkert.


Gratulerer, du har nå SSL som jobber med NGINX. Datasenterets webservere er sikrere.

Datasenter Trender Nyhetsbrev

DevOps, virtualisering, hybridsky, lagring og driftseffektivitet er bare noen av datasentertemaene vi vil trekke frem. Leveres mandager og onsdager

Registrer deg i dag

© Copyright 2020 | mobilegn.com