Zoeken op website

Hoe installeer ik het Let's Encrypt SSL-certificaat om Apache te beveiligen op RHEL/CentOS 7/6


Als uitbreiding op de laatste Let's Encrypt-tutorial over gratis SSL/TLS-certificaten, gaan we in dit artikel demonstreren hoe u gratis SSL/TLS-certificaten kunt verkrijgen en installeren die zijn uitgegeven door Let's Encrypt Certificate Authority voor Apache< webserver op CentOS/RHEL 7/6 en Fedora-distributies ook.

Als u Let’s Encrypt for Apache op Debian en Ubuntu wilt installeren, volgt u onderstaande handleiding:

Installatie Laten we coderen om Apache te beveiligen op Debian en Ubuntu

Voorbeeldomgeving testen

Vereisten

  1. Een geregistreerde domeinnaam met geldige A-records die verwijzen naar het openbare IP-adres van uw server.
  2. Apache-server geïnstalleerd met SSL-module ingeschakeld en virtuele hosting ingeschakeld voor het geval u meerdere domeinen of subdomeinen host.

Stap 1: Apache-webserver installeren

1. Als de httpd-daemon nog niet is geïnstalleerd, kan deze worden geïnstalleerd door het onderstaande commando te geven:

yum install httpd

2. Om Let's encrypt-software met Apache te laten werken, moet u ervoor zorgen dat de SSL/TLS-module is geïnstalleerd door de onderstaande opdracht uit te voeren:

yum -y install mod_ssl

3. Start ten slotte Apache-server met de volgende opdracht:

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

Stap 2: Installeer het Let's Encrypt SSL-certificaat

4. De eenvoudigste methode om de Let’s Encrypt-client te installeren is door de github-repository in uw bestandssysteem te klonen. Om git op je systeem te installeren moet je Epel-repository's inschakelen met de volgende opdracht.

yum install epel-release

5. Zodra Epel-repos aan uw systeem zijn toegevoegd, kunt u doorgaan en de git-client installeren door de onderstaande opdracht uit te voeren:

yum install git

6. Zodra u alle vereiste afhankelijkheden heeft geïnstalleerd om met Let's Encrypt om te gaan, gaat u naar de map /usr/local/ en begint u met het ophalen van het Let's Encrypt-clientformulier zijn officiële github-repository met de volgende opdracht:

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

Stap 3: Verkrijg een gratis Let’s Encrypt SSL-certificaat voor Apache

7. Het proces voor het verkrijgen van een gratis Let's Encrypt-certificaat voor Apache is geautomatiseerd voor CentOS/RHEL dankzij de apache-plug-in.

Laten we de scriptopdracht Let’s Encrypt uitvoeren om een SSL-certificaat te verkrijgen. Ga naar de installatiemap van Let's Encrypt vanuit /usr/local/letsencrypt en voer de opdracht letsencrypt-auto uit door de optie --apache en de -d vlag voor elk subdomein heeft u een certificaat nodig.

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

8. Geef het e-mailadres op dat door Let's Encrypt wordt gebruikt om uw verloren sleutel te herstellen of voor dringende mededelingen en druk op Enter om door te gaan.

9. Ga akkoord met de voorwaarden van de licentie door op Enter te drukken.

10. Op CentOS/RHEL gebruikt de Apache-server standaard niet het concept van het scheiden van mappen voor ingeschakelde hosts en beschikbare (inactieve) hosts zoals Debian sterke>gebaseerde distributie wel.

Bovendien is virtuele hosting standaard uitgeschakeld. De Apache-instructie die de naam van de server specificeert (Servernaam) is niet aanwezig in het SSL-configuratiebestand.

Om deze richtlijn te activeren, zal Let’s Encrypt u vragen een virtuele host te selecteren. Omdat er geen Vhost beschikbaar is, selecteert u het bestand ssl.conf dat automatisch moet worden gewijzigd door de Let's Encrypt-client en drukt u op Enter om door te gaan.

11. Kies vervolgens de Eenvoudige methode voor HTTP verzoeken en druk op Enter om verder te gaan.

12. Als alles soepel is verlopen, zou er ten slotte een felicitatiebericht op het scherm moeten verschijnen. Druk op Enter om de prompt vrij te geven.

Dat is het! U heeft met succes een SSL/TLS-certificaat uitgegeven voor uw domein. Nu kunt u door uw website bladeren met behulp van het HTTPS-protocol.

Stap 4: Test gratis Laten we de codering op domein coderen

13. Om de juistheid van de SSL/TLS-handshake van uw domein te testen, bezoekt u de onderstaande link en test u uw certificaat op uw domein.

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

14. Als u tijdens de uitgevoerde tests een reeks rapporten ontvangt over de kwetsbaarheid van uw domein, moet u deze beveiligingslekken dringend herstellen.

Een algemene beoordeling van klasse C maakt uw domein erg onveilig. Om deze beveiligingsproblemen op te lossen, opent u het Apache SSL-configuratiebestand en brengt u de volgende wijzigingen aan:

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

Zoek naar een regel met de SSLProtocol-instructie en voeg -SSLv3 toe aan het einde van de regel.

Ga dieper in het bestand, zoek en becommentarieer de regel met SSLCipherSuite door er een # voor te plaatsen en voeg de volgende inhoud onder deze regel toe:

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. Nadat u alle bovenstaande wijzigingen heeft aangebracht, slaat u het bestand op en sluit u het. Start vervolgens de Apache-daemon opnieuw om de wijzigingen toe te passen.

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

16. Test nu de status van uw domeinversleuteling opnieuw door naar dezelfde link als hierboven te gaan. Om nieuwe tests uit te voeren, klikt u op de link Cache wissen op de website.

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

Nu zou u een algemene beoordeling van klasse A moeten krijgen, wat betekent dat uw domein zeer goed beveiligd is.

Stap 4: Automatisch verlengen Laten we certificaten coderen op Apache

17. Deze bètaversie van Let's Encrypt-software geeft certificaten vrij met een vervaldatum na 90 dagen. Om het SSL-certificaat te vernieuwen, moet u dus vóór de vervaldatum de opdracht letsencrypt-auto opnieuw uitvoeren, met dezelfde opties en vlaggen die zijn gebruikt om het oorspronkelijke certificaat te verkrijgen.

Hieronder vindt u een voorbeeld van hoe u het certificaat handmatig kunt verlengen.

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

18. Om dit proces te automatiseren, maak je het volgende bash-script, geleverd door github erikaheidi, in de map /usr/local/bin/ met de volgende inhoud. (het script is enigszins aangepast om onze letencrypt-installatiemap weer te geven).

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

Voeg de volgende inhoud toe aan het bestand 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. Verleen uitvoeringsrechten voor het script, installeer het bc pakket en voer het script uit om het te testen. Gebruik uw domeinnaam als positionele parameter voor het script. Voer de onderstaande opdrachten uit om deze stap te voltooien:

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

20. Voeg ten slotte met behulp van Linux-planning een nieuwe cron-taak toe om het script elke twee maanden uit te voeren, zodat u zeker weet dat uw certificaat vóór de vervaldatum wordt bijgewerkt.

crontab -e

Voeg de volgende regel toe onder aan het bestand.


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

Dat is het! Uw Apache-server die bovenop het CentOS/RHEL-systeem draait, biedt nu SSL-inhoud aan met behulp van een gratis Let's Encrypt SSL-certificaat.