Jak zabezpieczyć Nginx za pomocą SSL i zaszyfrowajmy w FreeBSD

Jak zabezpieczyć Nginx za pomocą SSL i zaszyfrowajmy w FreeBSD

W tym przewodniku omówimy, jak zabezpieczyć Nginx serwer WWW w FreeBSD z TLS/SSL certyfikaty oferowane przez Zaszypujmy Urząd Świadectwa. Pokażamy również, jak automatycznie odnawiać certyfikaty szyfrowania Lets przed datą wygaśnięcia.

Tls, akronim dla Bezpieczeństwo warstwy transportowej, jest protokołem, który działa pod Http protokół i używa certyfikatów i kluczy w celu zamknięcia pakietów i szyfrowania danych wymienianych między serwerem a klientem lub w tym przypadku między Nginx Serwer WWW i przeglądarka klienta, aby zabezpieczyć połączenie, aby strona trzecia, która może przechwycić ruch, nie mogła odszyfrować transmisji.

Przeczytaj także: Zainstaluj Let's Encrypt for Apache na freebsd

Proces uzyskiwania bezpłatnego Zaszypujmy certyfikat w FreeBSD może być znacznie uproszczone poprzez instalację Certboot Narzędzie klienta, które jest oficjalnym klientem zaszyfrowanym do generowania i pobierania certyfikatów.

Wymagania

  1. Zainstaluj stos FBEMP (NGINX, MARIADB i PHP) w FreeBSD

Krok 1: Skonfiguruj Nginx TLS/SSL

1. Domyślnie, TLS/SSL Konfiguracja serwera nie jest włączona w FreeBSD ponieważ Tls Instrukcje bloków serwerów są komentowane w Nginx domyślny plik konfiguracyjny.

Aby aktywować Tls serwer w Nginx, otwarty nginx.conf plik konfiguracyjny, wyszukaj wiersz, który definiuje początek SSL serwera i zaktualizuj cały blok, który będzie wyglądał w poniższej próbce.

# nano/usr/local/etc/nginx/nginx.conf 

Nginx HTTPS blokowy fragment:

Nginx HTTPS Konfiguracja
serwer Słuchaj 443 SSL default_server; Nazwa serwera www.Twoja domena.com; access_log/var/log/nginx/access.dziennik; error_log/var/log/nginx/błąd.dziennik; error_page 500 502 503 504 /50x.html; Lokalizacja = /50x.html root/usr/local/www/nginx-dist;  lokalizacja/root/usr/local/www/nginx; indeks indeksu.Indeks HTML.HTM; try_files $ uri $ uri / / index.php?$ args;  ssl_certificate "/usr/local/etc/limsecrrypt/na żywo/www.Twoja domena.com/certyfikat.pem "; ssl_certificate_key"/usr/local/etc/limsecrrypt/na żywo/www.Twoja domena.com/Privey.pem "; ssl_protocols tlsv1 tlsv1.1 TLSV1.2; ssl_dhparam/usr/local/etc/nginx/dhparam.pem; SSL_SESSION_CACHE SHARED: SSL: 1M; ssl_session_timeout 10m; SSL_CIPHERS WYSOKI:!anull:!MD5; ssl_prefer_server_ciphers on; # Użyj kompresji GZIP GZIP ON; gzip_disable „MSIE6”; gzip_vary na; gzip_proxied one; gzip_comp_level 5; GZIP_BUFFERS 16 8K; gzip_http_version 1.0; # Ustaw zmienną, aby obejść brak zagnieżdżonych warunków Ustaw $ cache_uri $ request_uri; Lokalizacja ~ /.Dobrze znany pozwól wszystkim;  Lokalizacja ~ \.php $ root/usr/local/www/nginx; fastcgi_pass 127.0.0.1: 9000; indeks fastcgi_index.php; #fastcgi_param script_fileName /Scripts $ fastcgi_script_name; fastcgi_param script_filename $ request_fileName; Dołącz fastcgi_params;  

Powyższy blok, oprócz SSL blok, zawiera również niektóre stwierdzenia dotyczące włączania kompresji GZIP i FastCGI Process Manager, używane do przekazywania kodu PHP do PHP-FPM brama w celu uruchamiania dynamicznych aplikacji internetowych.

Po dodaniu powyższego kodu do Nginx główny plik konfiguracyjny, nie uruchamiaj demona ani nie stosuj ustawień przed zainstalowaniem i uzyskaniem Zaszypujmy Certyfikat Twojej domeny.

Krok 2: Zainstaluj klienta CertBot w FreeBSD

2. Proces instalowania Let's Encrypt Certbot Narzędzie klienta w FreeBSD obejmuje pobieranie kodu źródłowego dla PY-CERTBOT i lokalnie go kompiluj, wydając poniższe polecenia.

# CD/usr/porty/bezpieczeństwo/py-certbot # Spraw, by instaluj czyste 

3. Kompilowanie PY-CERTBOT Narzędzie zajmuje dużo czasu w porównaniu z instalacją zwykłego pakietu binarnego. W tym czasie wymagana jest seria zależności, aby pobrać lokalnie w FreeBSD.

Ponadto na ekranie pojawi się seria monitów, domagając się wybrania pakietów w czasie kompilacji dla każdej zależności. Na pierwszym ekranie wybierz następujące narzędzia, naciskając [przestrzeń] klucz, aby skompilować Python27 zależność, jak pokazano na poniższym obrazku.

  • IPv6
  • Libffi
  • NLS
  • Pymalloc
  • Wątki
  • UCS4 dla wsparcia Unicode
Włącz UCS4 dla Unicode

4. Następnie wybierz Dokumenty I Wątki Do Gettext-tools Zależność i naciśnij OK kontynuować, jak pokazano na poniższym obrazku.

Zainstaluj dokumentację

5. Na następnym ekranie opuść Testy Opcja wyłączona dla Libffi-3.2.1 i naciśnij OK poruszać się dalej.

Wyłącz testy Libffi

6. Następnie uderz przestrzeń wybrać Dokumenty Do PY27-ENUM34 zależność, która zainstaluje dokumentację tego narzędzia i naciśnij OK kontynuować, jak pokazano na poniższym zrzucie ekranu.

Zainstaluj dokumentację PY27

7. Na koniec wybierz zainstalowanie przykładowych próbek dla PY27-OPENSSL zależność poprzez naciskanie [przestrzeń] Klucz i uderzenie OK Aby zakończyć proces kompilacji i instalacji dla PY-CERTBOT klient.

Zainstaluj PY27 Openssl

8. Po procesie kompilacji i instalacji PY-CERTBOT Narzędzie kończy się, uruchom poniższe polecenie, aby zaktualizować narzędzie w najnowszej wersji pakietu, jak pokazano na poniższych zrzutach ekranu.

# PKG zainstaluj PY27-CERTBOT 
Uaktualnij narzędzie PY-CERTBOT

9. Aby uniknąć pewnych problemów, może to wystąpić podczas uzyskania za darmo Zaszypujmy certyfikat, najczęstszym błędem jest „PKG_RESOURCES.Dystrybucja Notfound”, Upewnij się, że w systemie obecne są również dwie zależności: PY27-salt I PY27-ACME.

# PKG zainstaluj PY27-salt # PKG instaluj PY27-ACME 

Krok 3: Zainstaluj Certyfikat zaszyfrowania Nginx na FreeBSD

10. Aby uzyskać samodzielny certyfikat zaszyfrowania Let's Encrypt dla swojej domeny, uruchom następujące polecenie i podaj nazwę domeny i wszystkie subdomeny, dla których chcesz uzyskać certyfikaty, sugerując -D flaga.

# certbot certonly --standalone -d Twoja domena.com -D www.Twoja domena.com 
Instaluj pozwala szyfrować Nginx

11. Podczas generowania certyfikatu zostaniesz poproszony o podanie adresu e -mail i uzgodnienie Let's Encrypt Warunki usług. Typ A od klawiatury, aby się zgodzić i kontynuować, a zostaniesz również zapytany, czy chcesz udostępnić swój adres e -mail z Partnerami Let's Encrypt.

Jeśli nie chcesz udostępniać swojego adresu e -mail, po prostu wpisz NIE Słowo w monicie i naciśnij [Wchodzić] Klucz do kontynuowania. Po pomyślnym uzyskaniu certyfikatów Twojej domeny otrzymasz kilka ważnych notatek, które poinformują Cię o tym, gdzie certyfikaty są przechowywane w twoim systemie, a kiedy wygasną.

Zaszypujmy podsumowanie

12. W przypadku uzyskania certyfikatu Let's Encrypt za pomocą „Webroot”Wtyczka, dodając Webroot katalog serwera Nginx dla Twojej domeny, wydaj następujące polecenie za pomocą --Webroot I -w flagi. Domyślnie, jeśli nie zmieniłeś ścieżki Nginx Webroot, powinno ona być zlokalizowana w /usr/local/www/nginx/ ścieżka systemowa.

# Certbot Certonly -Webroot -w /usr/local/www/nginx/ -D Twoja domena.com -D www.Twoja domena.com 

Jak w --Strandalone Procedura uzyskania certyfikatu, --Webroot Procedura poprosi również o podanie adresu e -mail w celu odnowienia certyfikatów i powiadomień o bezpieczeństwie, aby nacisnąć A Zgadzam się z warunkami zaszyfrowanymi i warunkami i NIE Lub Tak Aby udostępnić adres e -mail, zaszyfrowaj partnerów, jak pokazano w poniższej próbce.

Pamiętaj, że klient CertBot może wykryć fałszywy adres e -mail i nie pozwoli ci kontynuować generowania certyfikatu, dopóki nie podasz prawdziwego adresu e -mail.

Próbka Cerbot:
Zapisywanie dziennika debugowania do/var/log/limsecrrypt/limsecript.Zaloguj się Wpisz adres e -mail (używany do pilnej odnowienia i powiadomień o bezpieczeństwie) (wprowadź „C”, aby anulować):[chroniony e -mail] #A Fałszywy adres e -mail zostanie wykryty, wydaje się, że z tym adresem pojawią się problemy. Wprowadź adres e-mail (używany do pilnej odnowienia i powiadomień o bezpieczeństwie) Jeśli naprawdę chcesz to pominąć, możesz uruchomić klienta-Register-Unsafely-z-e-mail, ale upewnij się, że następnie wykonujesz kopię zapasową klawisza konta z/etc/letsEncrypt// Konta (wprowadź „C”, aby anulować): [e-mail chroniony] ------------------------------------- ------------------------------------------- Przeczytaj Warunki usługi pod adresem https: // LetsEncrypt.org/dokumenty/le-sa-v1.1.1-sierpień-1-2016.PDF. Musisz się zgodzić, aby zarejestrować się na serwerze ACME pod adresem https: // acme-v01.API.LetsEncrypt.Org/Directory ----------------------------------------------- -------------------------------- (a) Gree/(c) Ancer: A ------------------------------------------------------------------------------- Czy byłbyś skłonny udostępnić swój adres e-mail z Electronic Frontier Foundation, partnerem założycielem projektu Let's Encrypt i organizacji non-profit, która opracowuje CertBot? Chcielibyśmy wysłać Ci e -mail o EFF i naszą pracę w celu szyfrowania sieci, ochrony użytkowników i obrony praw cyfrowych. ------------------------------------------------------------------------------- (Tak nie: N Uzyskanie nowego certyfikatu wykonującego następujące wyzwania: Wyzwanie HTTP-01 dla www.domena.COM za pomocą ścieżki webroot/usr/local/www/nginx/dla wszystkich niezrównanych domen. Oczekiwanie na weryfikację… Wyzwanie wyzwania Ważne notatki: - Gratulacje! Twój certyfikat i łańcuch zostały zapisane na/usr/lokalne/etc/letsencrypt/na żywo/www.Twoja domena.com/Fullchain.pem. Twój certyfikat wygasa w dniach 2017-12-28. Aby uzyskać nową lub ulepszoną wersję tego certyfikatu w przyszłości, po prostu uruchom ponownie CertBot. Aby nie interaktywnie odnowić * wszystkie * z twoich certyfikatów, uruchom „Certbot Renew” - Twoje poświadczenia konta zostały zapisane w katalogu konfiguracji CertBot AT/USR/Local/Etc/LetsEncrypt. Powinieneś teraz wykonać bezpieczną kopię zapasową tego folderu. Ten katalog konfiguracyjny będzie również zawierał certyfikaty i prywatne klucze uzyskane przez CertBot, dzięki czemu regularne tworzenie kopii zapasowych tego folderu jest idealne. - Jeśli lubisz CertBot, rozważ wspieranie naszej pracy przez: darowizny na rzecz ISRG/Let's Encrypt: https: // LetsEncrypt.Org/darowizna darowizny na EFF: https: // eff.org/darowizna-le

Krok 4: Zaktualizuj certyfikaty Nginx TLS

13. Lokalizacja uzyskanych certyfikatów i kluczy w FreeBSD jest /usr/local/etc/limsecrrypt/na żywo/www.Twoja domena.com/ ścieżka systemowa. Wydaj polecenie LS w celu wyświetlenia komponentów certyfikatu Let's Encrypt: Plik łańcucha, plik FullChain, klucz prywatny i plik certyfikatu, jak pokazano w poniższym przykładzie.

# ls/usr/local/etc/limsecrrypt/na żywo/www.Twoja domena.com/ 
Lista pozwala szyfrować domeny ssl-keys

14. Aby zainstalować Let's Encrypt Certificates dla Twojej domeny na serwerze WWW Nginx, otwórz główny plik konfiguracyjny Nginx lub plik konfiguracyjny dla serwera Nginx TLS, w przypadku oddzielnego pliku, i zmodyfikuj poniższe wiersze, aby odzwierciedlić ścieżkę certyfikatów wydanych Let Encrypt wydane Jak pokazano poniżej.

# nano/usr/local/etc/nginx/nginx.conf 

Zaktualizuj następujące wiersze, jak wyglądają w tej próbce:

SSL_Certificate "/usr/local/etc/limsecrrypt/na żywo/www.Twoja domena.com/certyfikat.pem "; ssl_certificate_key"/usr/local/etc/limsecrrypt/na żywo/www.Twoja domena.com/Privey.pem "; 
Skonfiguruj SSL dla Nginx

15. Także, jeśli linia SSL_DHPARAM jest obecny w Nginx SSL konfiguracja, powinieneś wygenerować nowy 2048 fragment Diffie-Hellman Klucz z następującym poleceniem:

# OpenSsl dhparam -out/usr/local/etc/nginx/dhparam.PEM 2048 

16. Wreszcie, aby aktywować konfigurację Nginx TLS, najpierw sprawdź konfigurację globalną Nginx dla możliwych błędów składni.

# nginx -t # Service nginx restart 

17. Potwierdź, czy demon nginx jest wiążący 443 port poprzez wydanie następujących poleceń, które mogą wymienić wszystkie otwarte gniazda sieciowe w systemie w stanie słuchania.

# netstat -an -p tcp | grep słuchaj # sockstat -4 
Sprawdź porty Nginx

18. Możesz także odwiedzić swój adres domeny za pośrednictwem Https Protokół poprzez otwarcie przeglądarki i wpisz następujący adres, aby potwierdzić, że certyfikaty zaszyfrowane są zgodnie z oczekiwaniami. Ponieważ używasz certyfikatów generowanych przez prawidłowy organ certyfikatu, w przeglądarce nie należy wyświetlić błędu.

https: // www.Twoja domena.com 

19. Narzędzie OpenSSL może również pomóc w znalezieniu informacji o certyfikcie uzyskanym z Let's Encrypt CA, uruchamiając polecenie z następującymi opcjami.

# OpensSl S_Client -Connect www.Twoja domena.com: 443 
Sprawdź certyfikat SSL

Jeśli chcesz zmusić Nginx do skierowania wszystkich żądań HTTP do HTTPS otrzymanych dla Twojej domeny w porcie 80 Do Https, Otwórz plik konfiguracyjny Nginx, zlokalizuj dyrektywę serwera dla portu 80 i dodaj poniższy wiersz po instrukcji nazwy serwera.

Przepisz ^(.*) https: // www.Twoja domena.com 1 $ stały; 
Nginx przekieruj HTTP do HTTPS

20. Konfigurowanie automatycznego przedłużenia certyfikatu wydanego przez Let's Encrypt Authority, zanim wygasną, można wykonać, planując zadanie CRON, aby uruchomić raz dziennie, wydając następujące polecenie.

# crontab -e 

Zadanie CRON, aby odnowić certyfikat.

0 0 * * * Certbot Renew >>/var/log/LetsEncrypt.dziennik 

To wszystko! Nginx może teraz obsługiwać zabezpieczone aplikacje internetowe dla odwiedzających, używając Let's Szyfrowanie bezpłatnych certyfikatów.