[#142] Kubernetes i canary deployment na 3 sposoby - Istio, Traefik i nginx-ingress – M.Kubaczyk
Spisu treści:
- Wymagania wstępne
- Zainstaluj Certbot
- Wygeneruj grupę Strong Dh (Diffie-Hellman)
- Uzyskanie certyfikatu Let's Encrypt SSL
- Automatyczne odnawianie certyfikatu SSL Encrypt
- Wniosek
Let's Encrypt to bezpłatny i otwarty ośrodek certyfikacji opracowany przez Internet Security Research Group (ISRG). Certyfikaty wydawane przez Let's Encrypt są dziś zaufane przez prawie wszystkie przeglądarki.
W tym samouczku przedstawimy instrukcje krok po kroku, jak zabezpieczyć twój Nginx za pomocą Let's Encrypt za pomocą narzędzia certbot na CentOS 7.
Wymagania wstępne
Przed kontynuowaniem tego samouczka upewnij się, że zostały spełnione następujące wymagania wstępne:
- Masz nazwę domeny wskazującą adres IP twojego publicznego serwera. W tym samouczku wykorzystamy
example.com. Włączyłeś repozytorium EPEL i zainstalowałeś Nginx, postępując zgodnie z instrukcjami, jak zainstalować Nginx na CentOS 7.
Zainstaluj Certbot
Certbot to łatwe w użyciu narzędzie, które może zautomatyzować zadania związane z uzyskiwaniem i odnawianiem certyfikatów Let's Encrypt SSL oraz konfigurowaniem serwerów sieciowych.
Aby zainstalować pakiet certbot z repozytorium EPEL:
Wygeneruj grupę Strong Dh (Diffie-Hellman)
Wymiana kluczy Diffie – Hellmana (DH) to metoda bezpiecznej wymiany kluczy kryptograficznych przez niezabezpieczony kanał komunikacyjny.
Wygeneruj nowy zestaw 2048 bitowych parametrów DH, wpisując następujące polecenie:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Jeśli chcesz, możesz zmienić rozmiar do 4096 bitów, ale w takim przypadku generowanie może potrwać dłużej niż 30 minut, w zależności od entropii systemu.
Uzyskanie certyfikatu Let's Encrypt SSL
Aby uzyskać certyfikat SSL dla naszej domeny, użyjemy wtyczki Webroot, która działa, tworząc tymczasowy plik do sprawdzania poprawności żądanej domeny w katalogu
${webroot-path}/.well-known/acme-challenge
. Serwer Let's Encrypt wysyła żądania HTTP do pliku tymczasowego w celu sprawdzenia, czy żądana domena rozpoznaje serwer, na którym działa certbot.
Aby to
.well-known/acme-challenge
wszystkie żądania HTTP dotyczące
.well-known/acme-challenge
do pojedynczego katalogu
/var/lib/letsencrypt
.
Poniższe polecenia utworzą katalog i umożliwią zapisywanie go na serwerze Nginx.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Aby uniknąć powielania kodu, utwórz następujące dwa fragmenty, które będziemy dołączać do wszystkich naszych plików bloków serwera Nginx:
sudo mkdir /etc/nginx/snippets
/etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
/etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
Powyższy fragment zawiera chipsety zalecane przez Mozillę, włącza zszywanie OCSP, HTTP Strict Transport Security (HSTS) i wymusza kilka nagłówków HTTP zorientowanych na bezpieczeństwo.
Po utworzeniu fragmentów otwórz blok serwera domeny i
letsencrypt.conf
fragment
letsencrypt.conf
jak pokazano poniżej:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Załaduj ponownie konfigurację Nginx, aby zmiany odniosły skutek:
sudo systemctl reload nginx
Możesz teraz uruchomić Certbot z wtyczką webroot i uzyskać pliki certyfikatów SSL dla swojej domeny, wydając:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Jeśli certyfikat SSL zostanie pomyślnie uzyskany, certbot wydrukuje następujący komunikat:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-06-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:
Teraz, gdy masz pliki certyfikatów, możesz edytować blok serwera domeny w następujący sposób:
server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }
W powyższej konfiguracji wymuszamy HTTPS i przekierowujemy www do wersji innej niż www.
Na koniec ponownie załaduj usługę Nginx, aby zmiany odniosły skutek:
Automatyczne odnawianie certyfikatu SSL Encrypt
Certyfikaty Let's Encrypt są ważne przez 90 dni. Aby automatycznie odnowić certyfikaty przed ich wygaśnięciem, utworzymy cronjob, który będzie działał dwa razy dziennie i automatycznie odnowi każdy certyfikat 30 dni przed jego wygaśnięciem.
Uruchom komendę
crontab
aby utworzyć nową usługę Cronjob:
sudo crontab -e
Wklej następujące linie:
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"
Zapisz i zamknij plik.
Aby przetestować proces odnawiania, możesz użyć polecenia certbot, a następnie przełącznika --dry
--dry-run
:
sudo certbot renew --dry-run
Jeśli nie ma błędów, oznacza to, że proces odnawiania testu powiódł się.
Wniosek
W tym samouczku użyłeś klienta Let's Encrypt, certbot, aby pobrać certyfikaty SSL dla swojej domeny. Utworzyłeś również fragmenty Nginx, aby uniknąć powielania kodu, i skonfigurowałeś Nginx do używania certyfikatów. Na koniec samouczka skonfigurowałeś cronjob do automatycznego odnawiania certyfikatu.
nginx centos zaszyfrujmy certbot sslTen post jest częścią pakietu instalacyjnego LEMP na CentOS 7 series.
Inne posty z tej serii:
• Jak zainstalować Nginx na CentOS 7 • Zabezpiecz Nginx za pomocą Let's Encrypt na CentOS 7 • Zainstaluj MariaDB na CentOS 7 • Zainstaluj PHP 7 na CentOS 7 • Jak skonfigurować bloki serwera Nginx na CentOS 7Zabezpiecz nginx za pomocą Let's Encrypt na Debian 9
W tym samouczku wyjaśnimy, jak korzystać z narzędzia Certbot, aby uzyskać bezpłatny certyfikat SSL dla Nginx na Debianie 9. Pokażemy również, jak skonfigurować Nginx do korzystania z certyfikatu SSL i włączyć HTTP / 2.
Zabezpiecz nginx za pomocą Let's Encrypt na Ubuntu 18.04
Let's Encrypt to bezpłatny i otwarty ośrodek certyfikacji opracowany przez Internet Security Research Group. W tym samouczku przedstawimy instrukcje krok po kroku, w jaki sposób zabezpieczyć twój Nginx za pomocą Let's Encrypt za pomocą narzędzia certbot na Ubuntu 18.04
Zabezpiecz nginx za pomocą Let's Encrypt na Centos 8
W tym samouczku przedstawimy instrukcje krok po kroku, jak zainstalować bezpłatny certyfikat Let's Encrypt SSL na CentOS 8 z uruchomionym Nginx jako serwerem internetowym. Pokażemy także, jak skonfigurować Nginx do korzystania z certyfikatu SSL i włączyć HTTP / 2.







