Weboldal keresés

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

  1. Regisztrált domain név érvényes A rekordokkal, amelyek visszamutatnak a szerver nyilvános IP-címére.
  2. 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.