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