Instalacja Apache (Linux Ubuntnu), konfiguracja wirtualnych serwerów po adresie ip.
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, zautomatyzowany i otwarty ośrodek certyfikacji opracowany przez Internet Security Research Group (ISRG), który zapewnia bezpłatne certyfikaty SSL.
Certyfikaty wydawane przez Let's Encrypt są zaufane przez wszystkie główne przeglądarki i są ważne przez 90 dni od daty wystawienia.
W tym samouczku wyjaśniono, jak zainstalować bezpłatny certyfikat Let's Encrypt SSL na CentOS 8 z uruchomionym Apache jako serwerem WWW. Użyjemy narzędzia certbot do uzyskania i odnowienia certyfikatów.
Wymagania wstępne
Przed kontynuowaniem upewnij się, że spełnione są następujące warunki wstępne:
- Niech nazwa domeny wskazuje adres IP twojego publicznego serwera. Użyjemy
example.comApache jest zainstalowany i działa na twoim serwerze z wirtualnym hostem skonfigurowanym dla twojej domeny. Porty 80 i 443 są otwarte w twojej zaporze ogniowej.
Zainstaluj następujące pakiety, które są wymagane dla serwera WWW z szyfrowaniem SSL:
sudo dnf install mod_ssl openssl
Po zainstalowaniu pakietu mod_ssl powinien utworzyć samopodpisany plik klucza i certyfikatu dla hosta lokalnego. Jeśli pliki nie zostaną utworzone automatycznie, możesz je utworzyć za pomocą polecenia
openssl
:
sudo openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes \
-out /etc/pki/tls/certs/localhost.crt \
-keyout /etc/pki/tls/private/localhost.key
Zainstaluj Certbot
Certbot to bezpłatne narzędzie wiersza polecenia, które upraszcza proces uzyskiwania i odnawiania certyfikatów Let's Encrypt SSL oraz automatycznego włączania HTTPS na serwerze.
Pakiet certbot nie znajduje się w standardowych repozytoriach CentOS 8, ale można go pobrać ze strony internetowej dostawcy.
Uruchom następującą komendę
wget
jako użytkownik root lub sudo, aby pobrać skrypt certbot do katalogu
/usr/local/bin
:
sudo wget -P /usr/local/bin
Po zakończeniu pobierania uczyń plik wykonywalnym:
sudo chmod +x /usr/local/bin/certbot-auto
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 w celu zwiększenia bezpieczeństwa:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Możesz zmienić rozmiar do 4096 bitów, ale 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 uprościć konfigurację,
.well-known/acme-challenge
wszystkie żądania HTTP dotyczące
.well-known/acme-challenge
do jednego katalogu
/var/lib/letsencrypt
.
Uruchom następujące polecenia, aby utworzyć katalog i umożliwić zapisywanie go na serwerze Apache.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Aby uniknąć powielania kodu i ułatwić konfigurację, utwórz następujące dwa fragmenty konfiguracji:
/etc/httpd/conf.d/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
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # 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 korzysta z rębaków zalecanych przez Cipherli.st. Umożliwia zszywanie OCSP, HTTP Strict Transport Security (HSTS), klucz Dh i wymusza kilka skoncentrowanych na bezpieczeństwie nagłówków
Załaduj ponownie konfigurację Apache, aby zmiany odniosły skutek:
sudo systemctl reload
Teraz możesz uruchomić skrypt certbot z wtyczką webroot i pobrać pliki certyfikatów SSL:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Po pomyślnym zakończeniu 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 2020-01-26. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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 wszystko jest już skonfigurowane, edytuj konfigurację wirtualnego hosta domeny w następujący sposób:
/etc/httpd/conf.d/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 /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/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 /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/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 /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/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 /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/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
Powyższa konfiguracja wymusza HTTPS i przekierowuje ze strony www do wersji innej niż www. Umożliwia także HTTP / 2, dzięki czemu Twoje witryny będą szybsze i bardziej niezawodne. Możesz dostosować konfigurację do swoich potrzeb.
Uruchom ponownie usługę Apache:
sudo systemctl restart
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, utworzymy cronjob, który będzie działał dwa razy dziennie i automatycznie odnowi każdy certyfikat 30 dni przed datą jego wygaśnięcia.
Uruchom następującą komendę, aby utworzyć nową współpracę, która odnowi certyfikat i zrestartuje Apache:
echo "0 0, 12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto -q renew --renew-hook \"systemctl reload httpd\"" | sudo tee -a /etc/crontab > /dev/null
Aby przetestować proces odnawiania, użyj polecenia certbot, a następnie przełącznika --dry
--dry-run
:
sudo /usr/local/bin/certbot-auto renew --dry-run
Jeśli nie ma błędów, oznacza to, że proces odnowienia zakończył się powodzeniem.
Wniosek
W tym samouczku rozmawialiśmy o tym, jak używać certyfikatu klienckiego Let's Encrypt w CentOS, aby uzyskać certyfikaty SSL dla swoich domen. Pokazałeś także, jak skonfigurować Apache do korzystania z certyfikatów i skonfigurować cronjob do automatycznego odnawiania certyfikatów.
Aby dowiedzieć się więcej o skrypcie Certbot, odwiedź dokumentację Certbot.
apache centos zaszyfrujmy certbot sslBezpieczeństwo MongoDB: Zabezpiecz i zabezpiecz bazę danych MongoDB przed Ransomware
Ransomware trafiło niezabezpieczone instalacje MongoDB. Dowiedz się, jak zabezpieczyć i chronić bazę danych MongoDB. Przeczytaj więcej o problemach, liście kontrolnej i sprawdzonych metodach.
Zabezpiecz apache za pomocą szyfrowania na centos 7
W tym samouczku omówimy kroki niezbędne do zainstalowania bezpłatnego certyfikatu Let's Encrypt SSL na serwerze CentOS 7 z uruchomionym Apache jako serwerem WWW.
Zabezpiecz apache za pomocą szyfrowania w Debian 9
Ten samouczek poprowadzi Cię przez proces uzyskiwania bezpłatnego Let's Encrypt przy użyciu narzędzia certbot w Debianie 9. Pokażemy również, jak skonfigurować Apache do korzystania z nowego certyfikatu SSL i włączyć HTTP / 2







