Jak zabezpieczyć Nginx za pomocą Let's Encrypt on Ubuntu i Debian

Jak zabezpieczyć Nginx za pomocą Let's Encrypt on Ubuntu i Debian

Po poprzednich Zaszypujmy Samouczek dotyczący Apache SSL, W tym artykule omówimy sposób generowania i zainstalowania bezpłatnego certyfikatu SSL/TLS wydanego przez Szyfrujmy CA Do Nginx Webserver on Ubuntu Lub Debian.

Przeczytaj także
  1. Bezpieczne Apache z darmowym zaszyfrowaniem Let na Ubuntu i Debian
  2. Zainstaluj Let's Encrypt SSL, aby zabezpieczyć Apache na RHEL i CENTOS
Testowanie przykładowego środowiska
Instaluj pozwala zaszyfrować, aby zabezpieczyć Nginx na Ubuntu i Debian

Wymagania

  1. Zarejestrowana domena z ważnym DNS A rejestry, aby wskazać adres IP twojego serwera.
  2. Zainstalowany serwer WWW Nginx z włączonym SSL i VHost, na wypadek, gdybyś planował hostować wiele domen lub subdomenów.

Krok 1: Instalowanie serwera WWW Nginx

1. Na pierwszym etapie zainstaluj serwer WWW Nginx, jeśli już nie został zainstalowany, wydając poniższe polecenie:

$ sudo apt-get instaluj nginx 
Zainstaluj serwer WWW Nginx na Ubuntu 14.04 i Debian 8

Krok 2: Wygeneruj certyfikat Let's Encrypt SSL dla Nginx

2. Przed wygenerowaniem bezpłatnego certyfikatu SSL/TLS zainstaluj Zaszypujmy oprogramowanie w /usr/lokalny/ hierarchia systemu plików za pomocą git Klient, wydając poniższe polecenia:

$ sudo apt -get -y instalacja git $ cd/usr/local/$ sudo git klon https: // github.com/LetsEncrypt/LetsEncrypt 

3. Chociaż procedura uzyskania certyfikatu dla Nginx jest zautomatyzowany, nadal możesz ręcznie tworzyć i zainstalować bezpłatny certyfikat SSL dla Nginx za pomocą wtyczki Let's Encrypt.

Ta metoda wymaga tego portu 80 Nie wolno być używane w systemie przez krótki czas, podczas gdy Let's Encrypt Client sprawdza tożsamość serwera przed wygenerowaniem certyfikatu.

W przypadku, gdy już uruchamiasz Nginx, zatrzymaj usługę, wydając następujące polecenie.

$ sudo service nginx stop lub $ sudo systemctl stop nginx 

W przypadku uruchomienia innej usługi, która wiąże się z portem 80 Zatrzymaj również tę usługę.

4. Potwierdź ten port 80 jest bezpłatny, uruchamiając polecenie NetStat:

$ sudo netstat -tlpn | GREP 80 
Sprawdź aktualne porty słuchowe w Linux

5. Teraz nadszedł czas na ucieczkę LetsEncrypt Aby uzyskać certyfikat SSL. Iść do Zaszypujmy katalog instalacyjny znaleziony w /usr/local/letsEncrypt ścieżka systemowa i uruchom Letsecrrypt-Auto polecenie, dostarczając certyfikat --samodzielny opcja i -D flaga dla każdej domeny lub subdomeny, którą chcesz wygenerować certyfikat.

$ cd/usr/local/letsencrypt $ sudo ./LetsEncrypt -Auto certonly --standalone -d Your_domain.tld 
Uzyskaj Let's Encrypt SSL Certificate

6. Wprowadź adres e -mail, którego będzie używany przez Let's Encrypt w celu odzyskania zagubionego klucza lub pilnych powiadomień.

Wprowadź adres e-mail

7. Zgadzam się z warunkami licencji, naciskając klawisz Enter.

Zaakceptuj umowę LetsEncrypt

8. Wreszcie, jeśli wszystko się powiedzie, na twojej konsoli terminalowej powinna pojawić się wiadomość podobna do zrzutu zrzutu ekranu.

LetsEncrypt Instalacja kończy się

Krok 3: Zainstaluj Let's Scrypt SSL Certificate w Nginx

9. Teraz, gdy wygenerowano certyfikat SSL, czas skonfigurować Webserver Nginx, aby z niego korzystać. Nowo certyfikaty SSL są umieszczone w /etc/limsecrrypt/na żywo/ W katalogu nazwanym na cześć nazwy domeny. Uruchom polecenie LS, aby wymienić pliki certyfikatu wydane dla Twojej domeny.

$ sudo ls/etc/limsecrrypt/na żywo/$ sudo ls -al/etc/letsencrypt/na żywo/caesszar.tk 
LetsEncrypt SSL Certificates

10. Następnie otwórz /etc/nginx/witryny-dostępny/domyślny Plik z edytorem tekstu i dodaj następujący blok po pierwszym skomentowanym wierszu, który określa początek bloku SSL. Użyj poniższego zrzutu ekranu jako wskazówek.

$ sudo nano/etc/nginx/witryny-obsługuje/default 

Nginx blokowy fragment:

# Konfiguracja SSL # Słuchaj 443 SSL default_server; SSL_Certificate/Etc/LetsEncrypt/Live/Caeszar.TK/Fullchain.pem; SSL_Certificate_Key/etc/LetsEncrypt/Live/Caeszar.TK/Privey.pem; SSL_PROTOCOLS TLSV1 TLSV1.1 TLSV1.2; ssl_prefer_server_ciphers on; SSL_CIPHERS 'EECDH+AESGCM: EDH+AESGCM: AES256+EECDH: AES256+EDH'; ssl_dhparam/etc/nginx/ssl/dhparams.pem; 
Skonfiguruj Nginx do używania Let's Encrypt SSL

Wymień odpowiednio wartości nazwy domeny dla certyfikatów SSL.

11. Na następnym kroku generuj silny Diffie-Hellman szyfr w /etc/nginx/ssl/ katalog w celu ochrony twojego serwera przed Tarapaty atak przez uruchamianie następujących poleceń.

$ sudo mkdir/etc/nginx/ssl $ cd/etc/nginx/ssl $ sudo openssl dhparam -out dhparams.PEM 2048 
Wygeneruj szyfr Diffie Hellman dla Nginx

12. Na koniec ponownie uruchom demon nginx, aby odzwierciedlić zmiany.

$ sudo systemctl restart nginx 

i przetestuj certyfikat SSL, odwiedzając poniższy adres URL.

https: // www.ssllabs.COM/SSLTEST/Analizuj.html 
Sprawdź nginx pozwala zaszyfrować certyfikat SSL

Krok 4: Auto Renew Let's Encrypt Nginx Certyfikaty

13. Certyfikaty wydane przez Szyfrujmy CA są ważne przez 90 dni. Aby automatycznie odnowić pliki przed datą ważności SSL-Renew.cii Bash skrypt w /usr/lokalny/bin/ katalog z następującą treścią.

$ sudo nano/usr/local/bin/ssl-renew.cii 

Dodaj następującą zawartość do SSL-Renew.cii plik.

#!/bin/bash cd/usr/local/limscrypt sudo ./LetsEncrypt-Auto certonly -a Webroot --agree-tos--Renew-By-Default--Webroot-Path =/var/www/html/-d Your_Domain.TLD sudo systemCtl Reload nginx exit 0 
Auto Renew Nginx pozwala zaszyfrować certyfikat SSL

Zastąp --Webroot-Path zmienne, aby dopasować root dokumentu Nginx. Upewnij się, że skrypt jest wykonywalny, wydając następujące polecenie.

$ sudo chmod +x/usr/local/bin/ssl-renew.cii 

14. Wreszcie dodaj zadanie CRON, aby uruchomić skrypt co dwa miesiące o północy, aby zapewnić, że Twój certyfikat zostanie zaktualizowany za około 30 dni, zanim wygasa.

$ sudo crontab -e 

Dodaj następujący wiersz na dole pliku.

0 1 1 */2 */usr/local/bin/ssl-renew.sh >>/var/log/your_domain.TLD-RENEW.Log 2> i 1 
Aktualizacja pozwala zaszyfrować certyfikaty SSL

Otóż ​​to! Twój serwer Nginx obsługuje teraz treść SSL za pomocą bezpłatnego Szyfrujmy SSL certyfikat.