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

Zabezpečte Apache pomocí Lets Encrypt na CentOS 7

Let’s Encrypt je bezplatná, automatizovaná a otevřená certifikační autorita vyvinutá organizací Internet Security Research Group (ISRG). Certifikáty vydané Let’s Encrypt jsou platné 90 dní od data vydání a dnes jim důvěřují všechny hlavní prohlížeče.

V tomto tutoriálu probereme kroky potřebné k instalaci bezplatného certifikátu Let's Encrypt SSL na server CentOS 7, na kterém běží Apache jako webový server. K získání a obnovení certifikátů Let’s Encrypt použijeme nástroj certbot.

Předpoklady #

Než budete pokračovat v tomto kurzu, ujistěte se, že jste splnili 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.
  • Mějte pro svou doménu virtuální hostitele Apache.
  • 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:

yum install mod_ssl openssl

Instalovat Certbot #

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

Balíček certbot je dostupný pro instalaci z EPEL. Pokud úložiště EPEL není na vašem systému nainstalováno, můžete jej nainstalovat pomocí následujícího příkazu:

sudo yum install epel-release

Jakmile je úložiště EPEL povoleno, nainstalujte balíček certbot zadáním:

sudo yum install certbot

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 v takovém případě může generování 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 naši 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 se požadovaná doména překládá na server, na kterém běží certbot.

Aby to bylo 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 do něj 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, 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
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 SAMEORIGIN
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

Výše uvedený fragment obsahuje doporučené čipy, umožňuje sešívání OCSP, HTTP Strict Transport Security (HSTS) 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ůžeme spustit nástroj Certbot s pluginem webroot a získat soubory certifikátu SSL zadáním:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Pokud je certifikát SSL úspěšně získán, 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 2018-12-07. 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:                    https://eff.org/donate-le

CentOS 7 je dodáván s Apache verze 2.4.6, která neobsahuje SSLOpenSSLConfCmd směrnice. Tato direktiva je k dispozici pouze na Apache 2.4.8 později a používá se pro konfiguraci parametrů OpenSSL, jako je výměna klíčů Diffie–Hellman (DH).

Budeme muset vytvořit nový kombinovaný soubor pomocí certifikátu Let’s Encrypt SSL a vygenerovaného souboru DH. Chcete-li to provést, zadejte:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem

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

  <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/cert.dh.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

  # Other Apache Configuration

</VirtualHost>

S výše uvedenou konfigurací vynucujeme přesměrování HTTPSand z www na verzi bez www. Můžete si upravit konfiguraci podle svých potřeb.

Restartujte službu Apache, aby se změny projevily:

sudo systemctl restart httpd

Nyní můžete otevřít svůj web 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.

Spusťte crontab příkaz k vytvoření nového cronjob, který obnoví certifikát, vytvoří nový kombinovaný soubor včetně DH klíče a restartuje apache:

sudo crontab -e
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 httpd"

Uložte a zavřete soubor.

Chcete-li otestovat proces obnovení, můžete použít příkaz certbot následovaný příkazem --dry-run přepínač:

sudo certbot renew --dry-run

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


Cent OS
  1. Nainstalujte Zenario s Apache, PHP a MariaDB na CentOS 7

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

  3. Nainstalujte Apache na CentOS 8

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

  2. Zabezpečte Nginx pomocí Lets Encrypt na CentOS 7

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

  1. Jak nainstalovat a zabezpečit phpMyAdmin s Apache na CentOS 7

  2. Zabezpečte Apache pomocí Lets Encrypt na CentOS 8

  3. Zabezpečte Nginx pomocí Lets Encrypt na CentOS 8