Erweiterung des letzten Let’s Encrypt-Tutorials bezüglich kostenloser SSL/TLS-Zertifikate. In diesem Artikel zeigen wir, wie man kostenlose SSL/TLS-Zertifikate, ausgestellt von der Let’s Encrypt-Zertifizierungsstelle, für den Apache-Webserver unter CentOS/RHEL 7/6 und Fedora-Distributionen erhalten und installieren kann.
Wenn Sie Let’s Encrypt für Apache auf Debian und Ubuntu installieren möchten, folgen Sie dieser Anleitung:
Einrichten von Let’s Encrypt zur Absicherung von Apache unter Debian und Ubuntu
Testumgebung

Anforderungen
- A registered domain name with valid
A
records to point back to your server public IP Address. - Installierter Apache-Server mit aktiviertem SSL-Modul und Virtual Hosting für den Fall, dass Sie mehrere Domains oder Subdomains hosten.
Schritt 1: Apache Webserver installieren
1. Falls noch nicht installiert, kann der httpd-Dienst durch Ausführen des folgenden Befehls installiert werden:
# yum install httpd
2. Stellen Sie sicher, dass das SSL/TLS-Modul installiert ist, damit die Let’s Encrypt-Software mit Apache funktionieren kann, indem Sie den folgenden Befehl ausführen:
# yum -y install mod_ssl
3. Starten Sie schließlich den Apache-Server mit dem folgenden Befehl:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
Schritt 2: Let’s Encrypt SSL-Zertifikat installieren
4. Die einfachste Methode zur Installation des Let’s Encrypt-Clients besteht darin, das GitHub-Repository in Ihrem Dateisystem zu klonen. Um git auf Ihrem System zu installieren, müssen Sie die Epel-Repositorys mit dem folgenden Befehl aktivieren.
# yum install epel-release
5. Sobald die Epel-Repositorys in Ihrem System hinzugefügt sind, installieren Sie den Git-Client, indem Sie den folgenden Befehl ausführen:
# yum install git
6. Jetzt, da Sie alle erforderlichen Abhängigkeiten zur Bearbeitung von Let’s Encrypt installiert haben, gehen Sie zum Verzeichnis /usr/local/
und beginnen Sie mit dem Herunterladen des Let’s Encrypt-Clients aus seinem offiziellen GitHub-Repository mit dem folgenden Befehl:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
Schritt 3: Ein kostenloses Let’s Encrypt SSL-Zertifikat für Apache erhalten
7. Der Prozess zur Erlangung eines kostenlosen Let’s Encrypt-Zertifikats für Apache ist dank des Apache-Plugins für CentOS/RHEL automatisiert.
Führen Sie das Let’s Encrypt-Skript aus, um ein SSL-Zertifikat zu erhalten. Gehen Sie zum Let’s Encrypt-Installationsverzeichnis unter /usr/local/letsencrypt
und führen Sie den Befehl letsencrypt-auto
aus, indem Sie die Option --apache
und die Flagge -d
für jede Subdomain angeben, für die Sie ein Zertifikat benötigen.
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld

8. Geben Sie die E-Mail-Adresse ein, die von Let’s Encrypt verwendet wird, um Ihren verlorenen Schlüssel wiederherzustellen oder wichtige Mitteilungen zu senden, und drücken Sie die Eingabetaste, um fortzufahren.

9. Akzeptieren Sie die Lizenzbestimmungen, indem Sie die Eingabetaste drücken.

10. Auf CentOS/RHEL verwendet der Apache-Server standardmäßig nicht das Konzept, Verzeichnisse für aktivierte Hosts von verfügbaren (inaktiven) Hosts zu trennen, wie es bei auf Debian basierenden Distributionen der Fall ist.
Außerdem ist das virtuelle Hosting standardmäßig deaktiviert. Die Apache-Anweisung, die den Namen des Servers angibt (ServerName), ist nicht in der SSL-Konfigurationsdatei enthalten.
Um diese Direktive zu aktivieren, fordert Let’s Encrypt Sie auf, einen virtuellen Host auszuwählen. Da kein verfügbarer Vhost gefunden wird, wählen Sie die Datei ssl.conf
aus, die automatisch durch den Let’s Encrypt-Client modifiziert wird, und drücken Sie Enter, um fortzufahren.

11. Wählen Sie anschließend die Einfache-Methode für HTTP-Anfragen und drücken Sie Enter, um fortzufahren.

12. Wenn alles reibungslos verlaufen ist, sollte eine Glückwunschmeldung auf dem Bildschirm angezeigt werden. Drücken Sie Enter, um die Eingabeaufforderung freizugeben.

Das war’s! Sie haben erfolgreich ein SSL/TLS-Zertifikat für Ihre Domain ausgestellt. Jetzt können Sie Ihre Website mit dem HTTPS-Protokoll durchsuchen.
Schritt 4: Testen Sie die kostenlose Let’s Encrypt-Verschlüsselung auf Ihrer Domain
13. Um die Geradlinigkeit des SSL/TLS-Handshakes Ihrer Domain zu testen, besuchen Sie den unten stehenden Link und testen Sie Ihr Zertifikat auf Ihrer Domain.
https://www.ssllabs.com/ssltest/analyze.html

14. Wenn Sie eine Reihe von Berichten über Sicherheitslücken in Bezug auf Ihre Domain in den durchgeführten Tests erhalten, müssen Sie diese Sicherheitslücken dringend beheben.
Eine Gesamtbewertung der Klasse C macht Ihre Domain sehr unsicher. Um diese Sicherheitsprobleme zu beheben, öffnen Sie die Apache SSL-Konfigurationsdatei und nehmen Sie folgende Änderungen vor:
# vi /etc/httpd/conf.d/ssl.conf
Suchen Sie nach der Zeile mit der Anweisung SSLProtocol
und fügen Sie am Ende der Zeile -SSLv3
hinzu.

Gehen Sie weiter in der Datei, suchen Sie die Zeile mit SSLCipherSuite
und kommentieren Sie sie aus, indem Sie ein #
davor setzen. Fügen Sie unterhalb dieser Zeile den folgenden Inhalt ein:
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. Nachdem Sie alle oben genannten Änderungen vorgenommen haben, speichern und schließen Sie die Datei und starten Sie den Apache-Dienst neu, um die Änderungen zu übernehmen.
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]
16. Überprüfen Sie erneut den Status der Verschlüsselung Ihrer Domain, indem Sie denselben Link wie oben besuchen. Um erneute Tests durchzuführen, klicken Sie auf den Link „Cache löschen“ auf der Website.
https://www.ssllabs.com/ssltest/analyze.html

Jetzt sollten Sie eine Gesamtbewertung der Klasse A erhalten, was bedeutet, dass Ihre Domain sehr sicher ist.
Schritt 4: Automatische Erneuerung von Let’s Encrypt-Zertifikaten auf Apache
17. Diese Beta-Version der Let’s Encrypt-Software stellt Zertifikate mit einer Ablaufdauer von 90 Tagen aus. Um das SSL-Zertifikat zu erneuern, müssen Sie vor dem Ablaufdatum den Befehl letsencrypt-auto
erneut mit denselben Optionen und Flags ausführen, die zur Erstellung des ursprünglichen Zertifikats verwendet wurden.
Ein Beispiel, wie Sie das Zertifikat manuell erneuern können, wird unten dargestellt.
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
18. Um diesen Prozess zu automatisieren, erstellen Sie das folgende Bash-Skript, das von Github erikaheidi bereitgestellt wird, im Verzeichnis /usr/local/bin/
mit dem folgenden Inhalt. (Das Skript wurde leicht modifiziert, um unser Letsencrypt-Installationsverzeichnis widerzuspiegeln).
# vi /usr/local/bin/le-renew-centos
Fügen Sie den folgenden Inhalt zur Datei le-renew-centos
hinzu:
!/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. Gewähren Sie dem Skript Ausführungsberechtigungen, installieren Sie das Paket bc und führen Sie das Skript aus, um es zu testen. Verwenden Sie Ihren Domainnamen als Positionsparameter für das Skript. Geben Sie die folgenden Befehle ein, um diesen Schritt auszuführen:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld
20. Fügen Sie schließlich mit der Linux-Planung einen neuen Cron-Job hinzu, um das Skript alle zwei Monate auszuführen und sicherzustellen, dass Ihr Zertifikat vor dem Ablaufdatum aktualisiert wird.
# crontab -e
Fügen Sie die folgende Zeile am Ende der Datei hinzu.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
Das ist alles! Ihr Apache-Server, der auf einem CentOS/RHEL-System läuft, stellt jetzt SSL-Inhalte mit einem kostenlosen Let’s Encrypt SSL-Zertifikat bereit.
Source:
https://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/