Het installeren van een Let’s Encrypt SSL-certificaat om Apache op RHEL/CentOS 7/6 te beveiligen

Het uitbreiden van de laatste Let’s Encrypt tutorial met betrekking tot SSL/TLS gratis certificaten, in dit artikel gaan we demonstreren hoe je gratis SSL/TLS certificaten uitgegeven door Let’s Encrypt Certificate Authority kunt verkrijgen en installeren voor Apache webserver op CentOS/RHEL 7/6 en ook Fedora distributies.

Als je Let’s Encrypt voor Apache op Debian en Ubuntu wilt installeren, volg dan deze handleiding hieronder:

Installeer Let’s Encrypt om Apache te beveiligen op Debian en Ubuntu

Testomgeving testen
Install Lets Encrypt for Apache on CentOS and RHEL

Vereisten

  1. A registered domain name with valid A records to point back to your server public IP Address.
  2. Apache-server geïnstalleerd met SSL-module ingeschakeld en virtueel hosten ingeschakeld in het geval dat je meerdere domeinen of subdomeinen host.

Stap 1: Apache-webserver installeren

1. Indien nog niet geïnstalleerd, kan de httpd-daemon worden geïnstalleerd door het onderstaande commando uit te voeren:

# yum install httpd

2. Om Let’s Encrypt-software met Apache te laten werken, zorg ervoor dat de SSL/TLS-module is geïnstalleerd door het onderstaande commando uit te voeren:

# yum -y install mod_ssl

3. Start tot slot de Apache-server met het volgende commando:

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

Stap 2: Installeer Let’s Encrypt SSL-certificaat

4. De eenvoudigste methode om de Let’s Encrypt client te installeren is door de github repository op je bestandssysteem te klonen. Om git op je systeem te installeren, moet je de Epel repositories inschakelen met het volgende commando.

# yum install epel-release

5. Zodra de Epel repos zijn toegevoegd aan je systeem, ga je verder en installeer je de git client door het volgende commando uit te voeren:

# yum install git

6. Nu, zodra je alle vereiste afhankelijkheden hebt geïnstalleerd om met Let’s Encrypt om te gaan, ga je naar de /usr/local/ map en begin je de Let’s Encrypt client te halen uit zijn officiële github repository met het volgende commando:

# 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 om een gratis Let’s Encrypt certificaat voor Apache te verkrijgen is geautomatiseerd voor CentOS/RHEL dankzij de apache plugin.

Laten we het Let’s Encrypt scriptcommando uitvoeren om een SSL-certificaat te verkrijgen. Ga naar de Let’s Encrypt installatiemap vanaf /usr/local/letsencrypt en voer het letsencrypt-auto commando uit door de --apache optie en de -d vlag te verstrekken voor elke subdomein waarvoor je een certificaat nodig hebt.

# cd /usr/local/letsencrypt
# ./letsencrypt-auto --apache -d your_domain.tld 
Create Lets Encrypt SSL Certificate for Apache

8. Geef het e-mailadres op dat door Let’s Encrypt zal worden gebruikt om je verloren sleutel te herstellen of voor dringende meldingen en druk op Enter om door te gaan.

Add Email Address for Lets Encrypt

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

Agree Lets Encrypt License

10. Op CentOS/RHEL, gebruikt de Apache-server standaard niet het concept van het scheiden van mappen voor ingeschakelde hosts van beschikbare (inactieve) hosts zoals Debian-gebaseerde distributies doen.

Ook is virtueel hosten standaard uitgeschakeld. De Apache-verklaring die de naam van de server specificeert (ServerName) is niet aanwezig in het SSL-configuratiebestand.

Om deze richtlijn te activeren, zal Let’s Encrypt u vragen een virtuele host te selecteren. Omdat het geen beschikbare Vhost vindt, selecteert u het bestand ssl.conf om automatisch te laten wijzigen door de Let’s Encrypt-client en druk op Enter om door te gaan.

Active VirtualHost Directive and Select Mod_SSL

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

Allow Easy HTTP Requests

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

Lets Encrypt Enabled on Domain

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

Stap 4: Test Gratis Let’s Encrypt-encryptie op Domein

13. Om de correctheid 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
Verify Lets Encrypt Certificate on Domain

14. Als u een reeks rapporten ontvangt over de kwetsbaarheid van uw domein in de uitgevoerde tests, dan moet u die beveiligingslekken dringend oplossen.

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

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

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

Fix Apache SSL Configuration

Ga dieper in het bestand, zoek en commentaar 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
Configure SSL Configuration

15. Nadat u al deze wijzigingen heeft aangebracht, slaat u het bestand op, sluit u het en start u de Apache-daemon opnieuw op om de wijzigingen toe te passen.

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

16. Test nu opnieuw de status van de versleuteling van uw domein door dezelfde link als hierboven te bezoeken. Om opnieuw te testen, klikt u op de link Cache wissen op de website.

https://www.ssllabs.com/ssltest/analyze.html 
Test Lets Encrypt SSL Certificate on Website

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

Stap 4: Automatisch vernieuwen van Let’s Encrypt-certificaten op Apache

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

Een voorbeeld van hoe u het certificaat handmatig kunt vernieuwen, wordt hieronder gepresenteerd.

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

18. Om dit proces te automatiseren, maak de volgende bash-script aan die wordt geleverd door github erikaheidi, in de /usr/local/bin/ directory met de volgende inhoud. (het script is licht aangepast om onze letsencrypt installatiedirectory te weerspiegelen).

# 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 een positionele parameter voor het script. Gebruik de onderstaande commando’s om deze stap uit te voeren:

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

20. Voeg tot slot met behulp van Linux scheduling een nieuwe cronjob toe om het script elke twee maanden uit te voeren, zodat uw certificaat wordt bijgewerkt vóór de vervaldatum.

# crontab -e

Voeg de volgende regel toe onderaan 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 alles! Uw Apache-server die draait op een CentOS/RHEL-systeem serveert nu SSL-content met behulp van een gratis Let’s Encrypt SSL-certificaat.

Source:
https://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/