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
- Registrovaný název domény s platnými záznamy
A
, které odkazují zpět na veřejnou IP adresu vašeho serveru. - 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.