Vyhledávání na webu

Jak nainstalovat Let's Encrypt SSL certifikát k zabezpečení Apache na RHEL/CentOS 7/6


Rozšířením posledního kurzu Let's Encrypt týkajícího se bezplatných certifikátů SSL/TLS v tomto článku ukážeme, jak získat a nainstalovat bezplatné certifikáty SSL/TLS vydané Let's Encrypt Certificate Authority pro Apache< webový server na CentOS/RHEL 7/6 a distribucích Fedora.

Pokud chcete nainstalovat Let’s Encrypt for Apache na Debian a Ubuntu, postupujte podle tohoto průvodce níže:

Nastavte Let's Encrypt to Secure Apache na Debianu a Ubuntu

Testovací ukázkové prostředí

Požadavky

  1. Registrovaný název domény s platnými záznamy A, které odkazují zpět na veřejnou IP adresu vašeho serveru.
  2. Server Apache nainstalovaný s povoleným modulem SSL a povoleným virtuálním hostingem v případě, že hostujete více domén nebo subdomén.

Krok 1: Nainstalujte webový server Apache

1. Pokud ještě není nainstalován, lze démona httpd nainstalovat zadáním níže uvedeného příkazu:

yum install httpd

2. Aby software Let’s encrypt fungoval s Apache, zajistěte instalaci modulu SSL/TLS zadáním následujícího příkazu:

yum -y install mod_ssl

3. Nakonec spusťte server Apache pomocí následujícího příkazu:

systemctl start httpd.service          [On RHEL/CentOS 7]
service httpd start                    [On RHEL/CentOS 6]

Krok 2: Nainstalujte certifikát Let's Encrypt SSL

4. Nejjednodušší metodou instalace klienta Let’s Encrypt je klonování úložiště github ve vašem souborovém systému. Chcete-li nainstalovat git na váš systém, musíte povolit úložiště Epel pomocí následujícího příkazu.

yum install epel-release

5. Po přidání repozitářů Epel do vašeho systému pokračujte a nainstalujte klienta git spuštěním příkazu níže:

yum install git

6. Nyní, jakmile nainstalujete všechny požadované závislosti pro práci s Let's Encrypt, přejděte do adresáře /usr/local/ a začněte stahovat klientský formulář Let's Encrypt jeho oficiální úložiště github s následujícím příkazem:

cd /usr/local/
git clone https://github.com/letsencrypt/letsencrypt

Krok 3: Získejte bezplatný certifikát Let’s Encrypt SSL pro Apache

7. Proces získání bezplatného certifikátu Let’s Encrypt pro Apache je pro CentOS/RHEL automatizován díky pluginu Apache.

Spusťte příkaz skriptu Let’s Encrypt, abyste získali certifikát SSL. Přejděte do instalačního adresáře Let's Encrypt z /usr/local/letsencrypt a spusťte příkaz letsencrypt-auto zadáním možnosti --apache a < kód>-d pro každou subdoménu potřebujete certifikát.

cd /usr/local/letsencrypt
./letsencrypt-auto --apache -d your_domain.tld 

8. Zadejte e-mailovou adresu, kterou bude Let’s Encrypt používat k obnovení vašeho ztraceného klíče nebo pro naléhavá upozornění, a pokračujte stisknutím Enter.

9. Odsouhlaste podmínky licence stisknutím klávesy Enter.

10. Na CentOS/RHEL ve výchozím nastavení server Apache nepoužívá koncept oddělení adresářů pro povolené hostitele od dostupných (neaktivních) hostitelů jako Debian silná> distribuce založená na.

Ve výchozím nastavení je také zakázán virtuální hosting. Příkaz Apache, který specifikuje název serveru (ServerName), není obsažen v konfiguračním souboru SSL.

Chcete-li aktivovat tuto direktivu, Let’s Encrypt vás vyzve k výběru virtuálního hostitele. Protože nenajde žádný dostupný Vhost, vyberte soubor ssl.conf, který má být klientem Let’s Encrypt automaticky upraven, a pokračujte stisknutím Enter.

11. Dále vyberte metodu Easy pro požadavky HTTP a stisknutím klávesy Enter přejděte vpřed.

12. Pokud vše proběhlo hladce, měla by se na obrazovce zobrazit zpráva s blahopřáním. Stisknutím klávesy Enter výzvu uvolníte.

A je to! Úspěšně jste vydali certifikát SSL/TLS pro vaši doménu. Nyní můžete začít procházet svůj web pomocí protokolu HTTPS.

Krok 4: Otestujte zdarma šifrování Let's Encrypt na doméně

13. Chcete-li otestovat přímost navázání spojení SSL/TLS vaší domény, navštivte níže uvedený odkaz a otestujte svůj certifikát na vaší doméně.

https://www.ssllabs.com/ssltest/analyze.html

14. Pokud v provedených testech obdržíte řadu hlášení týkajících se zranitelnosti vaší domény, musíte tyto bezpečnostní díry urychleně opravit.

Celkové hodnocení třídy C činí vaši doménu velmi nebezpečnou. Chcete-li vyřešit tyto bezpečnostní problémy, otevřete konfigurační soubor Apache SSL a proveďte následující změny:

vi /etc/httpd/conf.d/ssl.conf

Vyhledejte řádek s příkazem SSLProtocol a na konec řádku přidejte -SSLv3.

Jděte hlouběji do souboru, vyhledejte a okomentujte řádek pomocí SSLCipherSuite tak, že před něj umístíte # a pod tento řádek přidáte následující obsah:

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder     on
SSLOptions +StrictRequire

15. Po provedení všech výše uvedených změn uložte a zavřete soubor a poté restartujte démona Apache, aby se změny aplikovaly.

systemctl restart httpd.service          [On RHEL/CentOS 7]
service httpd restart                    [On RHEL/CentOS 6]

16. Nyní znovu otestujte stav šifrování vaší domény tím, že navštívíte stejný odkaz jako výše. Chcete-li provést opakované testy, klikněte na odkaz Vymazat mezipaměť na webu.

https://www.ssllabs.com/ssltest/analyze.html 

Nyní byste měli získat celkové hodnocení třídy A, což znamená, že vaše doména je vysoce zabezpečená.

Krok 4: Automatické obnovení Let’s Encrypt Certificates na Apache

17. Tato beta verze softwaru Let’s Encrypt vydává certifikáty s datem vypršení platnosti po 90 dnech. Chcete-li tedy obnovit certifikát SSL, musíte před datem vypršení platnosti znovu provést příkaz letsencrypt-auto se stejnými možnostmi a příznaky, jaké jste použili k získání původního certifikátu.

Níže je uveden příklad ručního obnovení certifikátu.

cd /usr/local/letsencrypt
./letsencrypt-auto certonly --apache --renew-by-default  -d your_domain.tld

18. Chcete-li tento proces automatizovat, vytvořte následující bash skript poskytovaný githubem erikaheidi v adresáři /usr/local/bin/ s následujícím obsahem. (skript je mírně upraven, aby odrážel náš instalační adresář letsencrypt).

vi /usr/local/bin/le-renew-centos

Přidejte následující obsah do souboru le-renew-centos:

!/bin/bash

domain=$1
le_path='/usr/local/letsencrypt'
le_conf='/etc/letsencrypt'
exp_limit=30;

get_domain_list(){
        certdomain=$1
        config_file="$le_conf/renewal/$certdomain.conf"

        if [ ! -f $config_file ] ; then
                echo "[ERROR] The config file for the certificate $certdomain was not found."
                exit 1;
        fi

        domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}")
        last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}')

        if [ "${last_char}" = "," ]; then
                domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}')
        fi

        echo $domains;
}

if [ -z "$domain" ] ; then
        echo "[ERROR] you must provide the domain name for the certificate renewal."
        exit 1;
fi

cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"

if [ ! -f $cert_file ]; then
        echo "[ERROR] certificate file not found for domain $domain."
        exit 1;
fi

exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s)
datenow=$(date -d "now" +%s)
days_exp=$(echo \( $exp - $datenow \) / 86400 |bc)

echo "Checking expiration date for $domain..."

if [ "$days_exp" -gt "$exp_limit" ] ; then
        echo "The certificate is up to date, no need for renewal ($days_exp days left)."
        exit 0;
else
        echo "The certificate for $domain is about to expire soon. Starting renewal request..."
        domain_list=$( get_domain_list $domain )
        "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}"
        echo "Restarting Apache..."
        /usr/bin/systemctl restart httpd
        echo "Renewal process finished for domain $domain"
        exit 0;
fi

19. Udělte skriptu oprávnění ke spuštění, nainstalujte balíček bc a spusťte skript, abyste jej mohli otestovat. Použijte název své domény jako poziční parametr pro skript. Chcete-li provést tento krok, zadejte níže uvedené příkazy:

yum install bc
chmod +x /usr/local/bin/le-renew-centos
/usr/local/bin/le-renew-centos your_domain.tld

20. Nakonec pomocí plánování v Linuxu přidejte novou úlohu cron, aby se skript spouštěl každé dva měsíce a zajistilo se, že váš certifikát bude aktualizován před datem vypršení platnosti.

crontab -e

Přidejte následující řádek na konec souboru.


0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1

A je to! Váš server Apache běžící nad systémem CentOS/RHEL nyní poskytuje obsah SSL pomocí bezplatného certifikátu Let’s Encrypt SSL.