Samouczek dla uczniów - Instalowanie certyfikatów SSL / TLS na Nginx

  • George Richardson
  • 0
  • 1776
  • 271

Podczas uruchamiania Nginx na Ubuntu 16.10 ciągle pojawia się pytanie, jak zainstalować certyfikaty SSL / TLS dla serwerów sieciowych Nginx. Ten krótki samouczek pokaże studentom i nowym użytkownikom, jak łatwo zainstalować certyfikaty SSL dla serwerów internetowych Nginx w systemie Ubuntu 16.10.

Aby dowiedzieć się, jak to zrobić, przejdź poniżej

Nginx to potężny serwer WWW. Obecnie hostuję wszystkie moje blogi i witryny WordPress na serwerach Nginx. Apache2 dobrze mnie odciął, ale znalazłem nowego przyjaciela w Nginx.

Jeśli chcesz uruchomić Nginx przez protokół SSL / TLS HTTPS, kontynuuj poniżej, aby dowiedzieć się, jak to zrobić.

Krok 1: Uzyskaj Nginx działający na Ubuntu

Zanim będziesz mógł zainstalować i używać SSL / TLS na Nginx, powinieneś zainstalować i funkcjonować Nginx. Serwer WWW powinien mieć możliwość obsługi stron internetowych przez HTTP ze swojego katalogu głównego. Jeśli nie możesz zdać tego testu, obawiam się, że nie zajdziesz daleko z tym postem.

Aby zainstalować Nginx na Ubuntu, uruchom poniższe polecenia.

sudo apt-get update sudo apt-get install nginx

Powyższe polecenia instalują pakiety Nginx z domyślnych repozytoriów Ubuntu. jeśli chcesz mieć najnowsze i najlepsze z Nginx, musisz zainstalować je z własnych repozytoriów Nginx. Aby dodać to repozytorium do komputera Ubuntu, uruchom poniższe polecenia:

sudo sh -c 'echo "deb http://nginx.org/packages/ubuntu/' lsb_release -cs 'nginx" >> /etc/apt/sources.list.d/Nginx.list'

Po dodaniu repozytorium uruchom poniższe polecenia, aby dodać klucz repozytorium do systemu. To uwierzytelnia repozytorium.

cd / tmp / && wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key

Następnie uruchom poniższe polecenia, aby zainstalować najnowszą wersję Nginx na komputerze z systemem Ubuntu.

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autorove

Po zainstalowaniu Nginx powinieneś mieć dostęp do jego domyślnej strony testowej przez HTTP z katalogu głównego, jak pokazano poniżej:

Krok 2: Utwórz certyfikat z podpisem własnym SSL / TLS

Teraz, gdy Nginx jest zainstalowany i działa, przejdź i utwórz certyfikat z podpisem własnym. Aby to zrobić, uruchom poniższe polecenia, aby utworzyć folder certyfikatów

sudo mkdir / etc / nginx / ssl /

Następnie przejdź do tego folderu i uruchom następujące polecenia

cd / etc / nginx / ssl /

Uruchom poniższe polecenia, aby wygenerować klucz prywatny serwera. Zostaniesz poproszony o wpisanie i potwierdzenie hasła dla klucza prywatnego.

sudo openssl genrsa -des3 -out server.key 2048

Nginx uruchamia poniższe polecenia, aby wygenerować żądanie podpisania certyfikatu (CSR) przy użyciu klucza prywatnego serwera. Zostaniesz poproszony o wpisanie klucza prywatnego serwera.

sudo openssl req -new -key server.key -out server.csr

Po uruchomieniu powyższego polecenia w celu utworzenia pliku CSR zostaniesz poproszony o udzielenie odpowiedzi na następujące pytania… wypełnij je i wszystko powinno być dobre.

Za chwilę zostaniesz poproszony o wprowadzenie informacji, które zostaną uwzględnione we wniosku o certyfikat. To, co zamierzasz wprowadzić, to tak zwana nazwa wyróżniająca lub nazwa wyróżniająca. Jest kilka pól, ale możesz zostawić je puste. W przypadku niektórych pól będzie wartość domyślna. Jeśli wpiszesz „.”, Pole pozostanie puste. ----- Nazwa kraju (dwuliterowy kod) [AU]: Nazwa stanu lub prowincji w USA (pełna nazwa) [Niektóre-stan]: Nazwa miejscowości Minnesota (np. Miasto) []: Nazwa organizacji Brooklyn (np. Firma) [Internet Widgits Pty Ltd]: Nazwa jednostki organizacyjnej strony mojego bloga (np. Sekcja) []: Nazwa zwyczajowa jednostki SSL (np. Nazwa FQDN serwera lub TWOJA nazwa) []: adres e-mail myblogexample.com []: Wprowadź następujące „dodatkowe 'atrybuty, które mają być wysłane wraz z żądaniem certyfikatu Hasło weryfikacyjne []: NIE WPISUJ TUTAJ HASŁA, POZOSTAWIĆ PUSTE Opcjonalna nazwa firmy []: 

Następnie uruchom poniższe polecenia, aby wygenerować certyfikat, który będzie ważny przez 1 rok lub 365 dni. Możesz dowolnie wydłużać datę wygaśnięcia.

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Na koniec uruchom ostatnie polecenia poniżej, aby nie zawsze pojawiać się monit przy każdym ponownym uruchomieniu serwera internetowego. Zostaniesz poproszony o wpisanie klucza prywatnego serwera, wpisz go.

sudo cp server.key server.key.orig sudo openssl rsa -in server.key.orig -out server.key

Krok 3: Zainstaluj certyfikat

Ostatnim krokiem w procesie jest dodanie certyfikatu do konfiguracji Nginx, tak aby obsługiwał strony przez HTTPS. Znajdź poniżej przykładowe konfiguracje do wdrożenia na własnych serwerach. Istnieją dwa ważne pliki, których będziemy używać z / etc / nginx / ssl informator. Oni są server.key i server.crt.

Otwórz plik konfiguracyjny Nginx dla domyślnej witryny i wprowadź następujące wyróżnione zmiany:

serwer #listen 80 default_server; #listen [::]: 80 default_server; # Konfiguracja SSL # nasłuchiwanie 443 ssl default_server; słuchaj [::]: 443 ssl domyślny_serwer; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:! aNULL:! MD5 lub HIGH:! aNULL:! MD5:! 3DES"; ssl_prefer_server_ciphers on; # # Uwaga: należy wyłączyć gzip dla ruchu SSL. # Zobacz: https://bugs.debian.org/773332 # # Przeczytaj ssl_ciphers, aby zapewnić bezpieczną konfigurację. # Zobacz: https://bugs.debian.org/765782 # # Certyfikaty z podpisem własnym wygenerowane przez pakiet ssl-cert # Nie używaj ich na serwerze produkcyjnym! # # include snippets / snakeoil.conf; root / var / www / html; # Dodaj index.php do listy, jeśli używasz PHP index.html index.htm index.nginx-debian.html; Nazwa serwera _; location / # Najpierw spróbuj obsłużyć żądanie jako plik, następnie # jako katalog, a następnie wróć do wyświetlania 404. try_files $ uri $ uri / = 404;  # przekaż skrypty PHP do serwera FastCGI nasłuchującego pod adresem 127.0.0.1:9000 # #location ~ \ .php $ # include snippets / fastcgi-php.conf; # # # Z samym php7.0-cgi: # fastcgi_pass 127.0.0.1:9000; # # Z php7.0-fpm: # fastcgi_pass unix: /run/php/php7.0-fpm.sock; # # odmów dostępu do plików .htaccess, jeśli katalog główny Apache # jest zgodny z katalogiem nginx # #location ~ /\.ht # deny all; # 

To są podstawowe ustawienia, od których możesz zacząć. Po wprowadzeniu powyższych zmian uruchom poniższe polecenia, aby sprawdzić, czy konfiguracja jest dobra.

sudo nginx -t

Jeśli wszystko jest w porządku, uruchom ponownie Nginx, uruchamiając poniższe polecenia.

Następnie przejdź do nazwy hosta serwera lub adresu IP przez HTTPS (https: // localhost) .

Możesz przekierować 301 cały ruch przez HTTPS, dodając poniższy blok na dole pliku konfiguracyjnego.

serwer nasłuchuj 80; nazwa_serwera localhost; return 301 https: // localhost $ request_uri;  

W ten sposób konfigurujesz Nginx z certyfikatem SSL / TLS. Chociaż używamy certyfikatów z podpisem własnym, powinien również działać z zaufanymi certyfikatami z zaufanego urzędu certyfikacji.

Cieszyć się!




Jeszcze bez komentarzy

Zbiór przydatnych informacji o systemie operacyjnym Linux i nowych technologiach
Świeże artykuły, praktyczne wskazówki, szczegółowe recenzje i poradniki. Poczuj się jak w domu w świecie systemu operacyjnego Linux