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:
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:
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.