GNU/Linux >> Znalost Linux >  >> Cent OS

Zabezpečte Apache pomocí Lets Encrypt na CentOS 8

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

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

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

Předpoklady #

Než budete pokračovat, ujistěte se, že jsou splněny následující předpoklady:

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

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

sudo dnf install mod_ssl openssl

Když je balíček mod_ssl nainstalován, měl by vytvořit self-signedkey a soubory certifikátu pro localhost. Pokud se soubory nevytvoří automaticky, můžete je vytvořit pomocí openssl příkaz:

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

Instalovat Certbot #

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

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

Spusťte následující wget příkaz jako uživatel root nebo sudo ke stažení skriptu certbot do /usr/local/bin adresář:

sudo wget -P /usr/local/bin https://dl.eff.org/certbot-auto

Po dokončení stahování udělejte soubor spustitelným:

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

Generate Strong Dh (Diffie-Hellman) Group #

Výměna klíčů Diffie–Hellman (DH) je metoda bezpečné výměny kryptografických klíčů přes nezabezpečený komunikační kanál. Vygenerujte novou sadu 2048bitových parametrů DH 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í certifikátu Let’s Encrypt SSL #

K získání certifikátu SSL pro doménu použijeme plugin Webroot, který funguje tak, že vytvoří dočasný soubor pro ověření požadované domény v ${webroot-path}/.well-known/acme-challenge adresář. Server Let’s Encrypt odesílá požadavky HTTP na dočasný soubor, aby ověřil, že požadovaná doména se překládá na server, na kterém běží certbot.

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

Spuštěním následujících příkazů vytvořte adresář a udělejte jej zapisovatelný pro server Apache.

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

Chcete-li se vyhnout duplikaci kódu a zajistit snadnější údržbu konfigurace, vytvořte následující dva fragmenty konfigurace:

/etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>
/etc/httpd/conf.d/ssl-params.conf
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options SAMEORIGIN
Header always set X-Content-Type-Options nosniff

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

Výše uvedený úryvek používá štěpkovače doporučené Mozillou. Umožňuje sešívání OCSP, HTTP Strict Transport Security (HSTS), klíč Dh a vynucuje několik hlaviček HTTP zaměřených na zabezpečení.

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

sudo systemctl reload httpd

Nyní můžete spustit skript certbot s pluginem webroot a načíst soubory certifikátu 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 vytiskne certbot 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:                    https://eff.org/donate-le

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

/etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  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

</VirtualHost>

Výše uvedená konfigurace vynucuje přesměrování HTTPSand z www na verzi bez www. Umožňuje také HTTP/2, díky kterému budou vaše stránky rychlejší a robustnější. Můžete si upravit konfiguraci podle svých potřeb.

Restartujte službu Apache:

sudo systemctl restart httpd

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

Pokud svou doménu otestujete pomocí testu SSL Labs Server Test, získáte známku A+, jak je uvedeno níže:

Automatické obnovení certifikátu Let’s Encrypt SSL #

Certifikáty Let’s Encrypt jsou platné 90 dní. Abychom automaticky obnovili certifikáty před vypršením jejich platnosti, vytvoříme cronjob, který se bude spouštět dvakrát denně a automaticky obnoví jakýkoli certifikát 30 dní před vypršením jeho platnosti.

Spuštěním následujícího příkazu 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 obnovení, použijte příkaz certbot následovaný příkazem --dry-run přepínač:

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

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


Cent OS
  1. Zabezpečený Apache pomocí Let's Encrypt na CentOS 7 – proces krok za krokem?

  2. Jak nainstalovat Let’s Encrypt with Apache na CentOS 7

  3. Jak zabezpečit Apache pomocí Lets Encrypt na Ubuntu 18.04

  1. Jak nainstalovat webový server Apache na CentOS 7

  2. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 18.04

  3. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 16.04

  1. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 18.04

  2. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 20.04

  3. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 20.04