Wyszukiwanie w witrynie

Zainstaluj certyfikat Let’s Encrypt SSL dla Nginx na RHEL 9/8


W tym artykule poprowadzimy Cię, jak wygenerować i zainstalować certyfikat SSL/TLS uzyskany bezpłatnie od Let's Encrypt Authority, którego będziemy używać do zabezpieczania transakcji HTTP serwera WWW Nginx na RHEL i Dystrybucje oparte na RHEL, takie jak Fedora, Rocky Linux i AlmaLinux.

Jeśli chcesz zainstalować Let's Encrypt dla Apache w dystrybucjach RHEL i opartych na RHEL, postępuj zgodnie z poniższym przewodnikiem:

Wymagania

  • Zarejestrowana nazwa domeny z prawidłowymi rekordami DNS A wskazującymi publiczny adres IP serwera.
  • Serwer WWW Nginx zainstalowany z włączoną obsługą protokołu SSL i hostami wirtualnymi (tylko w przypadku hostingu wielu domen lub subdomen).

Nasza konfiguracja środowiska testowego

Krok 1: Zainstaluj serwer internetowy Nginx w systemach RHEL

1. W pierwszym kroku, jeśli nie masz jeszcze zainstalowanego demona Nginx, wydaj poniższe polecenia z uprawnieniami roota, aby zainstalować serwer WWW Nginx z repozytoriów Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Uwaga: użytkownicy Fedory nie muszą instalować repozytorium epel.

Krok 2: Zainstaluj Let’s Encrypt (Certbot) w systemach RHEL

2. Najszybszą metodą instalacji klienta Let's Encrypt w systemach Linux jest instalacja pakietów certbot i python3-certbot-nginx z repozytorium epel .


dnf install certbot python3-certbot-nginx

3. Po zainstalowaniu klienta certbot sprawdź zainstalowaną wersję oprogramowania Let's Encrypt, uruchamiając poniższe polecenie:


certbot --version

certbot 1.30.0

Krok 3: Uzyskaj bezpłatny certyfikat Let’s Encrypt SSL dla Nginx

4. Proces uzyskania bezpłatnego Certyfikatu SSL/TLS dla Nginx zostanie przeprowadzony ręcznie przy użyciu Let's Encrypt Standalone > wtyczka.

Ta metoda wymaga, aby port 80 był wolny w czasie, gdy klient Let's Encrypt sprawdza tożsamość serwera i generuje certyfikaty.

Jeśli więc Nginx jest już uruchomiony, zatrzymaj demona za pomocą następującego polecenia i uruchom narzędzie ss, aby potwierdzić, że port 80 nie jest już używany na stosie sieciowym.


service nginx stop
systemctl stop nginx
ss -tln

5. Teraz nadszedł czas, aby uzyskać bezpłatny certyfikat SSL od Let's Encrypt, uruchamiając polecenie certbot z --nginx aby zainicjować pobieranie i konfigurację certyfikatu bezpieczeństwa Let's Encrypt dla domen Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Na koniec, jeśli wszystko poszło tak, jak powinno, na terminalu bash zostanie wyświetlona informacja z gratulacjami. Komunikat wyświetli się również, gdy certyfikat wygaśnie.

Krok 4: Zainstaluj certyfikat Let’s Encrypt SSL w Nginx

9. Teraz, gdy posiadasz bezpłatny Certyfikat SSL/TLS, czas zainstalować go na serwerze Nginx, aby Twoja domena mogła z niego korzystać.

Wszystkie nowe certyfikaty SSL są umieszczane w /etc/letsencrypt/live/ w katalogu nazwanym na cześć nazwy Twojej domeny. Użyj polecenia ls, aby wyświetlić listę plików certyfikatów wydanych dla Twojej domeny i je zidentyfikować.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Aby zainstalować pliki certyfikatów w Nginx i włączyć SSL, otwórz plik /etc/nginx/nginx.conf do edycji i dodaj poniższe instrukcje po ostatniej linii odsłuchu z blok serwera. Skorzystaj z poniższej ilustracji jako wskazówki.

vi /etc/nginx/nginx.conf

Fragment bloku Nginx SSL:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Zastąp ciąg nazwa domeny, aby certyfikaty SSL były zgodne z Twoją domeną.

11. Na koniec uruchom ponownie usługę Nginx i odwiedź swoją domenę za pośrednictwem protokołu HTTPS pod adresem https://twojadomena. Strona powinna ładować się płynnie, bez błędów certyfikatu.

systemctl restart nginx
service nginx restart

12. Aby zweryfikować certyfikat SSL/TLS i jego poprawność, odwiedź poniższy link:

https://www.ssllabs.com/ssltest/analyze.html 

13. Jeśli otrzymasz powiadomienie, że Twój serwer obsługuje słabą wymianę kluczy DH i ogólną ocenę B, wygeneruj nowy plik DHDiffie-Hellman w katalogu /etc/nginx/ssl/, aby chronić swój serwer przed atakiem Logjam, uruchamiając następujące polecenia.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

W tym przykładzie użyliśmy klucza 4096-bitowego, którego wygenerowanie zajmuje dużo czasu i powoduje dodatkowe obciążenie serwera oraz uzgadniania SSL.

Jeśli nie ma wyraźnej potrzeby używania klucza tak długo i nie popadasz w paranoję, powinieneś być bezpieczny, stosując klucz 2048-bitowy.

14. Po wygenerowaniu klucza DH otwórz plik konfiguracyjny Nginx i dodaj poniższe instrukcje po linii ssl_ciphers, aby dodać klucz DH i podnieś poziom bezpieczeństwa swojej domeny do klasy A+.

vi /etc/nginx/nginx.conf

Dodaj następujący fragment blokowy do Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Uruchom ponownie usługę Nginx, aby zastosować zmiany i ponownie przetestować swój certyfikat SSL, czyszcząc pamięć podręczną poprzednich wyników z linku wspomnianego powyżej.

systemctl restart nginx
service nginx restart

Krok 5: Automatyczne odnawianie Nginx za darmo pozwala szyfrować certyfikaty SSL

16. Let's Encrypt CA udostępnia bezpłatne certyfikaty SSL/TLS ważne przez 90 dni. Certyfikaty można ręcznie odnawiać i stosować przed wygaśnięciem za pomocą wtyczki webroot, bez zatrzymywania serwera WWW, wydając poniższe polecenia:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Uruchamiając powyższe polecenie, pamiętaj o zastąpieniu example.com pasującym do Twojej domeny.

17. Aby automatycznie odnowić certyfikat przed jego wygaśnięciem, utwórz zadanie cron do istniejącego pliku crontab.


crontab -e

Dodaj następujące zadanie cron na dole pliku, które będzie uruchamiane codziennie w południe, aby sprawdzić wygaśnięcie certyfikatu i odnowić go. Opcja --quiet informuje certbota, aby nie generował danych wyjściowych.


0 12 * * * /usr/bin/certbot renew --quiet

To wszystko! Teraz serwer Nginx może dostarczać bezpieczne treści internetowe z bezpłatnym certyfikatem SSL/TLS Let's Encrypt na Twoją witrynę.