Android

Zabezpečte apache pomocí šifrování na centech 8

#ISPConfig a #HTTPS s certifikátem #letsencrypt

#ISPConfig a #HTTPS s certifikátem #letsencrypt

Obsah:

Anonim

Let's Encrypt je bezplatná, automatizovaná a otevřená certifikační autorita vyvinutá společností Internet Security Research Group (ISRG), která poskytuje bezplatné certifikáty SSL.

Certifikáty vydané Let's Encrypt jsou důvěryhodné ve všech hlavních prohlížečích a jsou platné 90 dní od data vydání.

Tento tutoriál vysvětluje, jak nainstalovat bezplatný certifikát Encrypt SSL na CentOS 8, na kterém běží Apache jako webový server. K získání a obnovení certifikátů použijeme nástroj certbot.

Předpoklady

Před pokračováním se ujistěte, že jsou splněny následující předpoklady:

  • Název domény ukazující na IP vašeho veřejného serveru. Použijeme example.com .Apache je na vašem serveru nainstalována a spuštěna s virtuálním hostitelem nakonfigurovaným pro vaši doménu. V bráně firewall jsou otevřeny středy 80 a 443.

Nainstalujte následující balíčky, které jsou vyžadovány pro webový server se šifrováním SSL:

sudo dnf install mod_ssl openssl

Když je nainstalován balíček mod_ssl, měl by vytvořit soubor klíče a certifikátu s vlastním podpisem pro localhost. Pokud soubory nejsou automaticky vytvořeny, můžete je vytvořit pomocí příkazu 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

Nainstalujte Certbot

Certbot je bezplatný nástroj příkazového řádku, který zjednodušuje proces získávání a obnovování šifrování SSL certifikátů z HTTPS na vašem serveru a automatické povolení

Balíček certbot není součástí standardních repozitářů CentOS 8, ale lze jej stáhnout z webových stránek dodavatele.

Spusťte následující příkaz wget jako uživatel root nebo sudo a stáhněte si skript certbot do /usr/local/bin :

sudo wget -P /usr/local/bin

Po dokončení stahování vytvořte soubor spustitelným:

sudo chmod +x /usr/local/bin/certbot-auto

Vytvořte silnou skupinu Dh (Diffie-Hellman)

Výměna klíčů Diffie – Hellman (DH) je metoda bezpečné výměny kryptografických klíčů přes nezajištěný komunikační kanál. Vygenerujte novou sadu 2048bitových DH parametrů pro posílení zabezpečení:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Velikost můžete změnit až na 4096 bitů, ale generování může trvat déle než 30 minut v závislosti na entropii systému.

Získání šifrovaného certifikátu SSL

K získání certifikátu SSL pro doménu použijeme plugin Webroot, který funguje vytvořením dočasného souboru pro ověření požadované domény ve složce ${webroot-path}/.well-known/acme-challenge . Server Pojďme šifrovat provede požadavky HTTP na dočasný soubor, aby ověřil, že se požadovaná doména převede na server, na kterém je spuštěn certbot.

Aby bylo nastavení jednodušší, /var/lib/letsencrypt všechny HTTP požadavky na .well-known/acme-challenge do jednoho adresáře /var/lib/letsencrypt .

Spusťte následující příkazy, abyste vytvořili adresář a učinili jej zapisovatelným pro server Apache.

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

Chcete-li se vyhnout duplikování kódu a zvýšit tak udržovatelnost konfigurace, vytvořte následující dva úryvky konfigurací:

/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 /etc/httpd/conf.d/ssl-params.conf

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"

Úryvek výše používá štěpkovače doporučené Cipherli.st. Umožňuje OCSP sešívání, HTTP Strict Transport Security (HSTS), klíč Dh a vynucuje několik záhlaví HTTP zaměřených na zabezpečení.

Znovu načtěte konfiguraci Apache, aby se změny projevily:

sudo systemctl reload

Nyní můžete spustit skript certbot pomocí pluginu webroot a načíst soubory certifikátů 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 úspěchu certbot vytiskne následující zprávu:

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:

Nyní, když je vše nastaveno, upravte konfiguraci virtuálního hostitele vaší domény takto:

/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

Výše uvedená konfigurace nutí HTTPS a přesměruje z www na non-www verzi. Umožňuje také HTTP / 2, díky kterému budou vaše stránky rychlejší a robustnější. Bezplatný pro přizpůsobení konfigurace podle vašich potřeb.

Restartujte službu Apache:

sudo systemctl restart

Nyní můžete otevřít svůj web pomocí https:// a všimnete si zelené ikony zámku.

Automatické obnovení Pojďme šifrovat SSL certifikát

Certifikáty šifrování jsou platné 90 dní. Chcete-li automaticky obnovit certifikáty před vypršením jejich platnosti, vytvoříme cronjob, který se spustí dvakrát denně a automaticky obnovíme jakýkoli certifikát 30 dní před jeho vypršením.

Spusťte následující příkaz a vytvořte nový cronjob, který obnoví certifikát a restartuje 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

Chcete-li otestovat proces obnovy, použijte příkaz certbot následovaný přepínačem --dry-run :

sudo /usr/local/bin/certbot-auto renew --dry-run

Pokud neexistují žádné chyby, znamená to, že proces obnovy byl úspěšný.

Závěr

V tomto tutoriálu jsme hovořili o tom, jak pomocí certifikátu Poďme šifrovat klienta na CentOS získat certifikáty SSL pro vaše domény. Také jste si ukázali, jak nakonfigurovat Apache tak, aby používal certifikáty a nastavil cronjob pro automatické obnovení certifikátů.

Další informace o skriptu Certbot naleznete v dokumentaci Certbot.

apache centos zašifrujme certbot ssl