Android

Zabezpiecz apache za pomocą Let's Encrypt na Ubuntu 18.04

Debian 8 #2 Instalacja Apache2, php5, mysql i phpmyadmin

Debian 8 #2 Instalacja Apache2, php5, mysql i phpmyadmin

Spisu treści:

Anonim

Let's Encrypt to urząd certyfikacji stworzony przez Internet Security Research Group (ISRG). Zapewnia bezpłatne certyfikaty SSL za pośrednictwem w pełni zautomatyzowanego procesu zaprojektowanego w celu wyeliminowania ręcznego tworzenia certyfikatu, sprawdzania poprawności, instalacji i odnawiania.

Certyfikaty wydawane przez Let's Encrypt są dziś zaufane przez wszystkie główne przeglądarki.

W tym samouczku przedstawimy instrukcje krok po kroku, jak zabezpieczyć swój Apache za pomocą Let's Encrypt za pomocą narzędzia certbot w Ubuntu 18.04.

Wymagania wstępne

Przed kontynuowaniem tego samouczka upewnij się, że zostały spełnione następujące wymagania wstępne:

  • Nazwa domeny wskazująca adres IP twojego publicznego serwera. Użyjemy example.com . Masz zainstalowany Apache z wirtualnym hostem Apache dla swojej domeny.

Zainstaluj Certbot

Certbot to w pełni funkcjonalne i ł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. Pakiet certbot znajduje się w domyślnych repozytoriach Ubuntu.

Zaktualizuj listę pakietów i zainstaluj pakiet certbot:

sudo apt update sudo apt install certbot

Wygeneruj grupę Strong Dh (Diffie-Hellman)

Wymiana kluczy Diffie – Hellmana (DH) to metoda bezpiecznej wymiany kluczy kryptograficznych przez niezabezpieczony kanał komunikacyjny. Wygenerujemy nowy zestaw 2048-bitowych parametrów DH w celu zwiększenia bezpieczeństwa:

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ć ponad 30 minut, w zależności od entropii systemu.

Uzyskanie certyfikatu Let's Encrypt SSL

Aby uzyskać certyfikat SSL dla 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 Apache.

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp www-data /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Aby uniknąć powielania kodu, utwórz następujące dwa fragmenty konfiguracji:

/etc/apache2/conf-available/letsencrypt.conf

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS /etc/apache2/conf-available/ssl-params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

Powyższy fragment wykorzystuje chipsety zalecane przez Cipherli.st, włącza zszywanie OCSP, HTTP Strict Transport Security (HSTS) i wymusza kilka nagłówków HTTP zorientowanych na bezpieczeństwo.

Przed włączeniem plików konfiguracyjnych upewnij się, że zarówno mod_ssl jak i mod_headers są włączone, wydając:

sudo a2enmod ssl sudo a2enmod headers

Następnie włącz pliki konfiguracyjne SSL, uruchamiając następujące polecenia:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

Włącz moduł HTTP / 2, który sprawi, że Twoje witryny będą szybsze i bardziej niezawodne:

sudo a2enmod

Załaduj ponownie konfigurację Apache, aby zmiany odniosły skutek:

sudo systemctl reload apache2

Teraz możemy uruchomić narzędzie Certbot z wtyczką webroot i uzyskać pliki certyfikatów SSL, wpisują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-10-28. 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, edytuj konfigurację wirtualnego hosta domeny w następujący sposób:

/etc/apache2/sites-available/example.com.conf

ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration

W powyższej konfiguracji wymuszamy HTTPS i przekierowujemy z wersji www na wersję inną niż www. Możesz dostosować konfigurację do swoich potrzeb.

Ponownie załaduj usługę Apache, aby zmiany odniosły skutek:

sudo systemctl reload apache2

Możesz teraz otworzyć witrynę za pomocą https:// , a zobaczysz zieloną ikonę kłódki.

Automatyczne odnawianie certyfikatu SSL Encrypt

Certyfikaty Let's Encrypt są ważne przez 90 dni. Aby automatycznie odnowić certyfikaty przed ich wygaśnięciem, pakiet certbot tworzy cronjob, który działa dwa razy dziennie i automatycznie odnawia każdy certyfikat 30 dni przed upływem jego ważności.

Po odnowieniu certyfikatu musimy również ponownie załadować usługę Apache. Dołącz --renew-hook "systemctl reload apache2" do pliku /etc/cron.d/certbot , aby wyglądał następująco:

/etc/cron.d/certbot

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 apache2"

Aby przetestować proces odnawiania, możesz użyć przełącznika certbot --dry --dry-run :

sudo certbot renew --dry-run

Jeśli nie ma błędów, oznacza to, że proces odnowienia zakończył się powodzeniem.

Wniosek

W tym samouczku użyłeś certyfikatu klienta Let's Encrypt, aby pobrać certyfikaty SSL dla swojej domeny. Utworzyłeś również fragmenty Apache, aby uniknąć powielania kodu, i skonfigurowałeś Apache do używania certyfikatów. Pod koniec tego samouczka skonfigurowałeś cronjob do automatycznego odnawiania certyfikatów.

apache ubuntu zaszyfrujmy certbot ssl

Ten post jest częścią serii poradników dotyczących instalacji lampy na stosie na Ubuntu-18-04.

Inne posty z tej serii:

• Jak zainstalować Apache na Ubuntu 18.04 • Jak skonfigurować Apache Virtual Hosts na Ubuntu 18.04 • Bezpieczny Apache za pomocą Let's Encrypt na Ubuntu 18.04 • Jak zainstalować MySQL na Ubuntu 18.04 • Jak zainstalować PHP na Ubuntu 18.04