A Let's Encrypt SSL-tanúsítvány telepítése a biztonságos Apache-hoz RHEL/CentOS 7/6 rendszeren
A legutóbbi Let's Encrypt oktatóanyag kiterjesztése az SSL/TLS ingyenes tanúsítványokra vonatkozóan, ebben a cikkben bemutatjuk, hogyan szerezhet be és telepíthet ingyenes SSL/TLS-tanúsítványokat, amelyeket a Let's Encrypt Certificate Authority bocsátott ki az Apache< számára. webszerver a CentOS/RHEL 7/6 és Fedora disztribúciókon is.
Ha telepíteni szeretné a Let’s Encrypt for Apache programot Debianra és Ubuntura, kövesse az alábbi útmutatót:
A Let’s Encrypt to Secure Apache beállítása Debian és Ubuntu rendszeren
Mintakörnyezet tesztelése
Követelmények
- Regisztrált domain név érvényes
A
rekordokkal, amelyek visszamutatnak a szerver nyilvános IP-címére. - Az Apache-szerver az SSL-modul engedélyezésével és a Virtuális tárhely engedélyezésével van telepítve, ha több tartományt vagy aldomaint tárol.
1. lépés: Telepítse az Apache webszervert
1. Ha még nincs telepítve, a httpd démon az alábbi parancs kiadásával telepíthető:
yum install httpd
2. Annak érdekében, hogy a Let’s encrypt szoftver működjön az Apache-val, az alábbi parancs kiadásával győződjön meg arról, hogy az SSL/TLS modul telepítve van:
yum -y install mod_ssl
3. Végül indítsa el az Apache szervert a következő paranccsal:
systemctl start httpd.service [On RHEL/CentOS 7]
service httpd start [On RHEL/CentOS 6]
2. lépés: Telepítse a Let’s Encrypt SSL-tanúsítványt
4. A Let's Encrypt kliens telepítésének legegyszerűbb módja a github tárhely klónozása a fájlrendszerben. A git rendszerre történő telepítéséhez engedélyeznie kell az Epel-tárolókat a következő paranccsal.
yum install epel-release
5. Miután az Epel repókat hozzáadta a rendszerhez, telepítse a git klienst az alábbi parancs futtatásával:
yum install git
6. Most, miután telepítette az összes szükséges függőséget a Let's Encrypt kezeléséhez, lépjen a /usr/local/
könyvtárba, és kezdje el lekérni a Let's Encrypt kliens űrlapot. hivatalos github tárházát a következő paranccsal:
cd /usr/local/
git clone https://github.com/letsencrypt/letsencrypt
3. lépés: Szerezzen be egy ingyenes Let’s Encrypt SSL-tanúsítványt az Apache számára
7. Az ingyenes Let’s Encrypt Certificate for Apache megszerzésének folyamata a CentOS/RHEL esetében az apache beépülő modulnak köszönhetően automatizált.
Futtassuk a Let’s Encrypt parancsfájlt, hogy megszerezzük az SSL-tanúsítványt. Lépjen a Let's Encrypt telepítési könyvtárba a /usr/local/letsencrypt
webhelyről, és futtassa a letsencrypt-auto
parancsot a --apache
és a < paraméter megadásával.-d jelző minden aldomainhez, amelyhez tanúsítványra van szüksége.
cd /usr/local/letsencrypt
./letsencrypt-auto --apache -d your_domain.tld
8. Adja meg azt az e-mail címet, amelyet a Let’s Encrypt az elveszett kulcs visszaállításához vagy sürgős értesítésekhez használ, majd nyomja meg az Enter billentyűt a folytatáshoz.
9. Az Enter billentyű lenyomásával fogadja el a licenc feltételeit.
10. A CentOS/RHEL rendszeren alapértelmezés szerint az Apache-kiszolgáló nem használja az engedélyezett gazdagépek könyvtárait az elérhető (inaktív) gazdagépektől Debianként. alapú disztribúció nem.
Ezenkívül a virtuális tárhely alapértelmezés szerint le van tiltva. Az Apache utasítás, amely megadja a kiszolgáló nevét (ServerName), nem szerepel az SSL konfigurációs fájlban.
Az utasítás aktiválásához a Let’s Encrypt felkéri, hogy válasszon virtuális gazdagépet. Mivel nem talál elérhető Vhost-ot, válassza ki az ssl.conf
fájlt, amelyet a Let’s Encrypt kliens automatikusan módosít, majd nyomja meg az Enter billentyűt a folytatáshoz.
11. Ezután válassza az Easy módszert a HTTP kérésekhez, és nyomja meg az Enter billentyűt a továbblépéshez.
12. Végül, ha minden gördülékenyen ment, egy gratuláló üzenetnek kell megjelennie a képernyőn. Nyomja meg az Enter billentyűt a felszólítás feloldásához.
Ez az! Sikeresen kiállított egy SSL/TLS tanúsítványt a domainjéhez. Most már elkezdheti böngészni a webhelyén a HTTPS protokoll használatával.
4. lépés: Tesztelje az ingyenes Let’s Encryption titkosítást a domainen
13. Domainje SSL/TLS kézfogásának ellenőrzéséhez látogasson el az alábbi linkre, és tesztelje tanúsítványát a domainjén.
https://www.ssllabs.com/ssltest/analyze.html
14. Ha az elvégzett tesztek során egy sor jelentést kap a domain sebezhetőségéről, akkor sürgősen ki kell javítania a biztonsági réseket.
A C osztály általános besorolása nagyon bizonytalanná teszi domainjét. A biztonsági problémák megoldásához nyissa meg az Apache SSL konfigurációs fájlt, és hajtsa végre a következő módosításokat:
vi /etc/httpd/conf.d/ssl.conf
Keresse meg a sort az SSLProtocol
utasítással, és adja hozzá a -SSLv3
kifejezést a sor végéhez.
Menjen mélyebbre a fájlban, keressen és írjon megjegyzést a sorba az SSLCipherSuite
segítségével úgy, hogy egy #
jelet helyez elé, és adja hozzá a következő tartalmat e sor alá:
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. Miután elvégezte a fenti módosításokat, mentse és zárja be a fájlt, majd indítsa újra az Apache démont a módosítások alkalmazásához.
systemctl restart httpd.service [On RHEL/CentOS 7]
service httpd restart [On RHEL/CentOS 6]
16. Most ismét teszteli a domain titkosításának állapotát a fenti link meglátogatásával. Az újratesztek végrehajtásához kattintson a gyorsítótár törlése hivatkozásra a webhelyen.
https://www.ssllabs.com/ssltest/analyze.html
Most egy A osztályú általános értékelést kell kapnia, ami azt jelenti, hogy domainje fokozottan védett.
4. lépés: Automatikus megújítás Titkosítsuk a tanúsítványokat az Apache-on
17. A Let’s Encrypt szoftver ezen bétaverziója 90 nap utáni lejáratú tanúsítványokat bocsát ki. Tehát az SSL-tanúsítvány megújításához ismét végre kell hajtania a letsencrypt-auto
parancsot a lejárati dátum előtt, ugyanazokkal a beállításokkal és jelzőkkel, mint a kezdeti tanúsítvány beszerzésénél.
Az alábbiakban bemutatunk egy példát a tanúsítvány kézi megújítására.
cd /usr/local/letsencrypt
./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
18. A folyamat automatizálásához hozza létre a github erikaheidi által biztosított következő bash szkriptet a /usr/local/bin/
könyvtárban a következő tartalommal. (a szkript kissé módosult, hogy tükrözze a letsencrypt telepítési könyvtárunkat).
vi /usr/local/bin/le-renew-centos
Adja hozzá a következő tartalmat a le-renew-centos
fájlhoz:
!/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. Adjon végrehajtási engedélyeket a szkriptnek, telepítse a bc csomagot, és futtassa a szkriptet a teszteléshez. Használja a domain nevét a szkript pozícióparamétereként. A lépés végrehajtásához adja ki az alábbi parancsokat:
yum install bc
chmod +x /usr/local/bin/le-renew-centos
/usr/local/bin/le-renew-centos your_domain.tld
20. Végül a Linux-ütemezés használatával adjon hozzá egy új cron-feladatot a szkript kéthavonta történő futtatásához, biztosítva, hogy a tanúsítvány a lejárati dátum előtt frissüljön.
crontab -e
Adja hozzá a következő sort a fájl aljához.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
Ez az! A CentOS/RHEL rendszeren futó Apache-szerver mostantól SSL-tartalmat szolgál ki egy ingyenes Let's Encrypt SSL-tanúsítvány használatával.