Konfiguracja Nginx SSL w Linux

Konfiguracja Nginx SSL w Linux

SSL (oznacza Secure Socket Layer) to protokół internetowy, który sprawia, że ​​ruch między serwerem a klientem jest bezpieczny. Serwer i klienci bezpiecznie przesyłają ruch bez ryzyka interpretacji komunikacji przez strony trzecie. Pomaga także klientowi weryfikować tożsamość witryny, z którą się komunikuje.

W tym poście opiszemy, jak skonfigurować SSL dla Nginx. Będziemy zademonstrować procedurę za pomocą certyfikatu podpisanego podpisanego. Self-podpisany certyfikat tylko szyfruje połączenie, ale nie potwierdza tożsamości twojego serwera. Dlatego powinien być używany tylko do testowania środowisk lub do wewnętrznych usług LAN. W przypadku środowiska produkcyjnego lepiej jest korzystać z certyfikatów podpisanych przez CA (Certyfikat).

Wymagania wstępne

W tym poście powinieneś mieć następujące warunki wstępne:

  • Nginx już zainstalowany na twoim komputerze
  • Blok serwerowy skonfigurowany dla Twojej domeny
  • Użytkownik z uprawnieniami sudo

Wyjaśniona tutaj procedura została przeprowadzona Debian 10 (Buster) maszyna.

Krok 1: Generowanie samowystarczalnego certyfikatu

Naszym pierwszym krokiem będzie wygenerowanie samowystarczalnego certyfikatu. Wydaj poniższe polecenie w terminalu, aby wygenerować CSR (żądanie podpisywania certyfikatu) i klucz:

$ sudo openssl req -x509 -nodes -Days 365 -Newkey RSA: 2048 -Keyout/etc/ssl/private/selfsigned -nginx.klucz -ut/etc/ssl/certs/selfsigned -nginx.crt

Zostaniesz poproszony o podanie informacji, takich jak nazwa twojego kraju, stan, miejscowość, nazwa zwyczajowa (nazwa domeny lub adres IP) i adres e -mail.

W powyższym poleceniu OpenSSL utworzy następujące dwa pliki:

  • CSR: Selfsigned-Nginx.crt w /etc/ssl/cert/katalog
  • Klucz: Selfsigned-Nginx.klucz w /etc/ssl/prywatny katalog

Teraz stwórz Dhparam.plik PEM Korzystanie z poniższego polecenia:

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

Krok 2: Konfigurowanie Nginx do użycia SSL

W poprzednim kroku stworzyliśmy CSR i klucz. Teraz na tym etapie skonfigurujemy Nginx do użycia SSL. W tym celu utworzymy fragment konfiguracyjny i dodamy informacje o naszych plikach certyfikatów SSL i lokalizacjach kluczowych.

Wydaj poniższe polecenie w terminalu, aby utworzyć nowy fragment konfiguracji Self-podpisany.plik CONF w /etc/nginx/fragmenty.

$ sudo nano/etc/nginx/fragmenty/podpisane.conf

W pliku dodaj następujące wiersze:

SSL_Certificate/Etc/SSL/certs/Selfsigned-Nginx.crt;
SSL_Certificate_Key/etc/ssl/private/selfsigned-nginx.klucz;

SSL_Certificate jest ustawione na Selfsigned-Nginx.crt (plik certyfikatu), podczas gdy ssl_certificate_key jest ustawione na Selfsigned-Nginx.klucz (plik kluczowy).

Zapisz i zamknij Self-podpisany.conf plik.

Teraz utworzymy kolejny plik fragmentu SSL-params.conf i skonfiguruj podstawowe ustawienia SSL. Wydaj poniższe polecenie w terminalu, aby edytować SSL-params.conf plik:

$ sudo nano/etc/nginx/fragmenty/ssl-params.conf

Dodaj następującą zawartość do pliku:

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-aes256-sha384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
SSL_SESSION_CACHE SHARED: SSL: 10m;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
Resolver 8.8.8.8 8.8.4.4 ważne = 300s;
RESPING_TIMEOUT 5S;
add_header x-frame-options odmawia;
add_header x-content-type-options nosniff;
add_header x-xss-ochrona „1; tryb = block”;

Ponieważ nie używamy certyfikatu podpisanego przez CA, dlatego wyłączyliśmy zszywanie SSL. Jeśli używasz certyfikatu podpisanego przez CA, pocukaj SSL_stapling wejście.

Krok 3: Konfigurowanie Nginx do użycia SSL

Teraz otworzymy plik konfiguracji bloku serwera Nginx, aby dokonać niektórych konfiguracji. W tym kroku założymy, że skonfigurowałeś blok serwera, który będzie podobny do tego:

serwer
Posłuchaj 80;
Posłuchaj [::]: 80;
root/var/www/test.org/html;
indeks indeksu.Indeks HTML.Indeks HTM.Nginx-debian.html;
Test nazwy_ serwera.org www.test.org;
Lokalizacja /
try_files $ uri $ uri/ = 404;

Aby otworzyć plik konfiguracyjny bloku serwera Nginx, użyj poniższego polecenia:

$ sudo nano/etc/nginx/witryny-dostępny/testowy.org

Teraz zmodyfikuj istniejący serwer blok, aby wyglądał tak:

serwer
Posłuchaj 443 SSL;
Posłuchaj [::]: 443 SSL;
obejmują fragmenty/podpisane.conf;
Uwzględnij fragmenty/parami SSL.conf;
root/var/www/test.org/html;
indeks indeksu.Indeks HTML.Indeks HTM.Nginx-debian.html;
Test nazwy_ serwera.org www.test.org;

W powyższych konfiguracjach dodaliśmy również fragmenty SSL Self-podpisany.conf I SSL-params.conf że skonfigurowaliśmy wcześniej.

Następnie dodaj drugi serwer blok.

serwer
Posłuchaj 80;
Posłuchaj [::]: 80;
Test nazwy_ serwera.org www.test.org;
return 302 https: // $ server_name $ request_URI;

W powyższej konfiguracji, Zwrot 302 przekierowuje HTTP do HTTPS.

Notatka: Pamiętaj, aby wymienić test.org z własną nazwą domeny. Teraz zapisz i zamknij plik.

Krok 4: Zezwalaj na ruch SSL przez zaporę ogniową

Jeśli w systemie jest włączona zapora ogniowa, będziesz musiał zezwolić na ruch SSL. Nginx zapewnia trzy różne profile z UFW. Możesz je wyświetlić za pomocą poniższego polecenia w terminalu:

Lista aplikacji $ sudo UFW

Zobaczysz następujące dane wyjściowe z trzema profilem ruchu Nginx.

Będziesz musiał zezwolić na profil „Nginx pełny” w zaporze ogniowej. Aby to zrobić, użyj poniższego polecenia:

$ sudo ufw zezwalaj na „nginx pełny”

Aby sprawdzić, czy profil został dozwolony w zaporze, użyj poniższego polecenia:

Status $ sudo UFW

Krok 5: Testuj plik konfiguracyjny Nginx

Teraz przetestuj plik konfiguracyjny Nginx za pomocą poniższego polecenia w terminalu:

$ sudo nginx -t

Powinieneś zobaczyć poniższe wyjście.


Teraz utwórz symboliczny związek między witrynami-dostępnymi a witrynami:

$ ln -s/etc/nginx/witryny -dostępny/testowy.com/etc/nginx/witryny/obsługę/

Następnie uruchom ponownie usługę Nginx, aby zastosować zmiany konfiguracji. Użyj poniższego polecenia, aby to zrobić:

$ sudo systemctl restart nginx

Krok 6: Test SSL

Teraz, aby przetestować SSL, przejdź do następującego adresu:

https: // adres domena-or-ip

Jak skonfigurowaliśmy certyfikat podpisany, dlatego zobaczymy ostrzeżenie, że połączenie nie jest bezpieczne. Następująca strona pojawia się podczas korzystania z przeglądarki Firefox Mozilla.

Kliknij Zaawansowany przycisk.

Kliknij Dodaj wyjątek.

Następnie kliknij Potwierdź wyjątek bezpieczeństwa.

Teraz zobaczysz swoją witrynę HTTPS, ale ze znakiem ostrzegawczym (Zamknij z żółtym znakiem ostrzegawczym) o bezpieczeństwie Twojej witryny.

Sprawdź również, czy przekierowanie działa poprawnie, uzyskując dostęp do domeny lub adresu IP za pomocą HTTP.

http: // adres domena-or-ip

Teraz, jeśli Twoja witryna automatycznie przekieruje się do HTTPS, oznacza to, że przekierowanie działało poprawnie. Aby na stałe skonfigurować przekierowanie, edytuj plik konfiguracyjny bloku serwera za pomocą poniższego polecenia w terminalu:

$ sudo nano/etc/nginx/witryny-dostępny/testowy.org

Teraz zmień zwrot 302 wracać 301 w pliku, a następnie zapisz i zamknij.

W ten sposób możesz skonfigurować SSL dla Nginx w systemie Debian 10. Utworzyliśmy samowystarczalny certyfikat demonstracji. Jeśli jesteś w środowisku produkcyjnym, zawsze wybierz certyfikat CA.