Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_http_server_archlinux_-_mod_ssl_-_verschluesselung_https

Apache HTTP Server ArchLinux - mod_ssl - Verschlüsselung (https)

Das Apache HTTP Server-Modul mod_ssl wird benötigt um HTTP Kommunikation verschlüsselt betreiben zu können. Die Seitenaufrufe werden nicht nur mehr via http auf Port 80 erreicht, sonder auch via https auf Port 443. Um eine HTTP Kommunikation verschlüsselt betreiben zu können, sind zwei weitere Komponenten erforderlich, ein

  1. Schlüssel und ein
  2. Zertifikat.

* Quellen: Buch: Sascha Kersken - Apache 2.4 Das umfassende Handbuch

:!: WICHTIG - Nachfolgende Konfigurationen setzen die Einrichtung eines Apache HTTP Servers, wie unter nachfolgendem internen Link beschrieben, voraus:

:!: HINWEIS - Eine explizite Installation des Moduls mod_ssl ist nicht erforderlich, da das Modul im Pakete apache bereits enthalten ist!

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

ssl-Konfiguration

ssl-Konfiguration: /etc/httpd/conf/extra/httpd-ssl.conf

Verzeichnis/Name Beschreibung
/etc/httpd/conf/extra/httpd-ssl.conf Beinhaltet die Einstellungen zur SSL-Konfiguration

/etc/httpd/conf/extra/httpd-ssl.conf

Erklärungen:

  • SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Diese komplexe Direktive verwendet eine durch Doppelpunkte getrennte Cipher-Zeichenkette, die aus OpenSSL-Cipher-Spezifikationen besteht, um die Cipher Suite zu konfigurieren, die der Client in der SSL-Handshake-Phase aushandeln darf. Der optionale Protokollspezifizierer kann die Cipher Suite für eine bestimmte SSL-Version konfigurieren.

  • SSLProxyCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Diese Direktive kann verwendet werden, um die SSL-Protokollvarianten zu steuern, die mod_ssl beim Aufbau seiner Serverumgebung für Proxy verwenden soll. Es wird sich nur mit Servern verbinden, die eines der angegebenen Protokolle verwenden. Siehe auch die Erklärungen zu: SSLCipherSuite

  • SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

Diese Direktive kann verwendet werden, um zu steuern, welche Versionen des SSL/TLS-Protokolls bei neuen Verbindungen akzeptiert werden.

  • SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1

Mit dieser Direktive kann gesteuert werden, welche SSL-Protokollvarianten mod_ssl verwenden soll, wenn es seine Serverumgebung für Proxy einrichtet. Es wird sich nur mit Servern verbinden, die eines der angegebenen Protokolle verwenden. Siehe auch die Erklärungen zu: SSLProtocol

Erklärungen:

  • SSLUseStapling On

Einkommentieren der bereits vorbereiteten aber standardmässig auskommentierten Zeile, das OSCP (Online Certificate Status Protocol) Stapling im Apache HTTP Server aktiviert wird.

  • SSLStaplingCache "shmcb:/run/httpd/ssl_stapling(131072)"

Konfiguriert den Cache, der zum Speichern von OSCP (Online Certificate Status Protocol) Stapling-Antworten verwendet wird, die in den TLS-Handshake aufgenommen werden, wenn SSLUseStapling aktiviert ist. Die Konfiguration eines Caches ist für OSCP (Online Certificate Status Protocol) Stapling zwingend erforderlich.

Erklärungen:

  • ServerName apache.tachtler.net:443

Hostname und TCP-HTTPS-Port des Apache HTTP Servers. Der hier angegeben Name dient ausschliesslich und nur der Selbstidentifikation des Apache HTTP Servers. Ob dieser auch für selbst referenzierende URLs benutzt werden soll, regelt nachfolgende Direktive: Siehe nachfolgenden externen Link: UseCanonicalName

  • ServerAdmin webmaster@tachtler.net

E-Mail-Adresse des Apache HTTP Server-Administrators für automatisch generierte Fehlermeldungensseiten. Wenn der Apache HTTP Server bei der Beantwortung von Client-Anfragen auf Probleme stösst, wird eine angepasste Fehlermeldungsseite erzeugt, welche unter Umständen auch die zusätzliche Ausgabe eines Links mit der E-Mail-Adresse des Apache HTTP Server-Administrators enthalten kann.
Siehe auch nachfolgenden externen Link: ServerSignature

  • SSLCertificateFile "/etc/letsencrypt/live/apache.tachtler.net/fullchain.pem"

Diese Direktive verweist auf eine Datei mit Zertifikatsdaten im PEM-Format.

:!: HINWEIS - Die Nutzung der Direktive SSLCertificateChainFile ist veraltet (deprecated). SSLCertificateChainFile wurde mit Apache HTTP Server Version 2.4.8 als veraltet gesetzt, da SSLCertificateFile erweitert wurde, um auch CA-Zwischenzertifikate aus der Server-Zertifikatsdatei zu laden.

  • SSLCertificateKeyFile "/etc/letsencrypt/live/apache.tachtler.net/privkey.pem"

Diese Direktive verweist auf die PEM-kodierte private Schlüsseldatei für den Server.

ssl-Konfiguration: /etc/httpd/conf/httpd.conf

Bevor ein erneuter Neustart des Apache HTTP Server erfolgreich durchgeführt werden kann, ist es erforderlich für die nachfolgende Installation die Konfigurationsdatei /etc/httpd/conf/httpd.conf zu verändern.

Nachfolgende die Veränderung, welche vorgenommen werden muss:

(Nur relevanter Ausschnitt):

# Tachtler
# default: #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Erklärungen:

  • LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Die Einbindung des Moduls mod_cache_socache ist erforderlich, wenn Zugriffe über HTTPS gegen den Apache HTTP Server erfolgen sollen und implementiert einen Shared Object Cache Provider, der die Erstellung und den Zugriff auf einen Cache ermöglicht, der durch einen leistungsstarken zyklischen Puffer innerhalb eines Shared Memory Segments unterstützt wird.

(Nur relevanter Ausschnitt):

# Tachtler
# default: #LoadModule ssl_module modules/mod_ssl.so
LoadModule ssl_module modules/mod_ssl.so

Erklärungen:

  • LoadModule ssl_module modules/mod_ssl.so

Die Einbindung des Moduls mod_ssl ist erforderlich, wenn Zugriffe über HTTPS gegen den Apache HTTP Server erfolgen sollen.

(Nur relevanter Ausschnitt):

# Tachtler
# default: #LoadModule rewrite_module modules/mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so

Erklärungen:

  • LoadModule rewrite_module modules/mod_rewrite.so

Die Einbindung des Moduls mod_rewrite ist erforderlich, wenn z.B. ein Let's Encrypt-Zertifikat und eine Validieren via HTTP-01 challenge durchgeführt werden soll.

Siehe auch nachfolgende externe Links:

Let's Encrypt - Certbot

Nachfolgend sollen Zertifikate von der Zertifizierungsstelle Let's Encrypt bezogen werden. Dies soll durch Nutzung der empfohlenen ACME Client Implementierungen - Certbot - durchgeführt werden.

Weitere Hinweise dazu, können unter nachfolgenden externen Link abgefragt werden:

Nachfolgend sollen die beiden gebräuchlichsten Arten, wie ein Zertifikat von Let's Encrypt bezogen weden kann:

  • HTTP-01
  • DNS-01

wie auch unter nachfolgenden externen Link beschrieben:

durchgeführt werden.

Let's Encrypt - Certbot - Installation

Zur Installation des Certbot wird nachfolgendes Paket benötigt:

  • certbot - ist im community-Repository von ArchLinux enthalten.

Mit nachfolgendem Befehl, wird das Pakete certbot installiert:

# pacman -S --noconfirm certbot

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket certbot installiert wurden:

# pacman -Qil certbot

Installierte Dateien

Ein detaillierte Beschreibung zu den Certbot - Command-line options kann unter nachfolgendem externen Link eingesehen werden:

Let's Encrypt - Certbot - HTTP-01

Let's Encrypt - Certbot - /etc/httpd/conf/httpd.conf

Let's Encrypt gibt dem ACME-Client einen Token und der ACME-Client, hier Certbot legt eine Datei auf dem Webserver unter

  • http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN>

ab.

Diese Datei enthält den Token sowie einen Fingerabdruck des Kontoschlüssels.

Damit dies möglich wird, ist z.B. eine Anpassung der Konfigurationsdatei

  • /etc/httpd/conf/httpd.conf

des Apache HTTP Server wie nachfolgend erforderlich:

(Nur relevanter Ausschnitt)

# Tachtler
# ----------------------------------------------------------
# For creation of Let's Encrypt certificates following lines 
# are necessary.
# ----------------------------------------------------------
Alias /.well-known/acme-challenge/ /srv/http/.well-known/acme-challenge/
 
<Location /.well-known/acme-challenge/>
    Require all granted
    Satisfy Any
</Location>

Certbot erstellt im Verzeichnis

  • /srv/http/.well-known/acme-challenge/

die TOKEN-Dateien, welche dann zur Prüfung der Berechtigung von den Servern von Let's Encrypt abgerufen werden.

Let's Encrypt - Certbot - Neustart Apache HTTPD Server

Bevor weitere Konfigurationsschritte erfolgen, sollte ein Neustart erfolgen, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl restart httpd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

Let's Encrypt - Certbot - HTTP-01 - Zertifikatserstellung

Mit nachfoglendem Befehl kann mit dem ACME-Client Certbot ein Let's Encrypt-Zertifikat erstmals erstellt werden:

# certbot certonly --test-cert --agree-tos --non-interactive -m webmaster@tachtler.net --webroot --webroot-path /srv/http -d apache.tachtler.net -d www.apache.tachtler.net

Erklärungen:

Parameter Beschreibung
certbot Ausführbares Programm des ACME-Client Certbot
certonly Subkommand um ein Zertifikat zu beantragen oder zu erneuern, ohne Installation
−−webroot Dateien zur Authentifizierung in den Webroot-Ordner eines Servers erzeugen
−−agree-tos Akzeptieren des Abonnentenvertrag des ACME-Servers
−m <E-Mail> E-Mail-Adresse für wichtige Kontobenachrichtigungen, z.B. Zertifikatsablauf
−−non-interactive Ausführung, ohne dass eine Benutzereingabe erforderlich ist
−−webroot-path <Pfad> Pfad zur Web-Präsenz im Apache HTTPD Server. Dies kann mehrfach/mehrere Male angegeben werden, um verschiedene Domänen zu behandeln
-d <Domäne.tld> Domäne und Top-Level-Domäne. Dies kann mehrfach/mehrere Male angegeben werden, um verschiedene Domänen zu behandeln bzw. die einzelnen SAN (Subject Alternative Names) in ienem Zertifikat zu erstellen
Zusätzliche Test-Parameter
−−test-cert Ausführung nicht gegen den produktiven Server von Let's Encrypt, sondern gegen den Test Server.
−−dry-run Testen von certonly oder auch renew, ohne ein Zertifikat auf der Festplatte zu speichern

Erstellung gegen die Test-CA von Let's Encrypt

# certbot certonly --test-cert --agree-tos --non-interactive -m webmaster@tachtler.net --webroot --webroot-path /srv/http -d apache.tachtler.net -d www.apache.tachtler.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Account registered.
Requesting a certificate for apache.tachtler.net and www.apache.tachtler.net
Performing the following challenges:
http-01 challenge for apache.tachtler.net
http-01 challenge for www.apache.tachtler.net
Using the webroot path /srv/http for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/apache.tachtler.net/privkey.pem
   Your certificate will expire on 2022-08-01. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"

:!: HINWEIS - Das Löschen aller Verzeichnisse und Dateien aus der Erstellung gegen die Test-CA von Let's Encrypt, kann mit nachfolgendem Befehl erfolgen:

# rm -rf /etc/letsencrypt/*

Erstellung gegen die produktive CA von Let's Encrypt

# certbot certonly --agree-tos --non-interactive -m webmaster@tachtler.net --webroot --webroot-path /srv/http -d apache.tachtler.net -d www.apache.tachtler.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Account registered.
Requesting a certificate for apache.tachtler.net and www.apache.tachtler.net
Performing the following challenges:
http-01 challenge for apache.tachtler.net
http-01 challenge for www.apache.tachtler.net
Using the webroot path /srv/http for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/apache.tachtler.net/privkey.pem
   Your certificate will expire on 2022-08-01. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Falls das Erstellen eines Zertifikats erfolgreich durchgeführt worden ist, ist im Verzeichnis

  • /etc/letsencrypt/live

ein neues Unterverzeichnis mit dem Namen der ersten Domäne.tld hier

  • /etc/letsencrypt/live/apache.tachtler.net

erstellt worden, in dem alle benötigten Dateien vorhanden sind und welches einen Inhalt wie mit nachfolgendem Befehl abgerufen, zur Ansicht bringen sollte:

# ls -l /etc/letsencrypt/live/apache.tachtler.net/
total 4
lrwxrwxrwx 1 root root  43 May  3 16:58 cert.pem -> ../../archive/apache.tachtler.net/cert1.pem
lrwxrwxrwx 1 root root  44 May  3 16:58 chain.pem -> ../../archive/apache.tachtler.net/chain1.pem
lrwxrwxrwx 1 root root  48 May  3 16:58 fullchain.pem -> ../../archive/apache.tachtler.net/fullchain1.pem
lrwxrwxrwx 1 root root  46 May  3 16:58 privkey.pem -> ../../archive/apache.tachtler.net/privkey1.pem
-rw-r--r-- 1 root root 692 May  3 16:58 README

Eine Überprüfung, ob das Zertifikat auch korrekt ausgestellt wurde, kann mit nachfolgendem Befehl erfolgen:

# openssl x509 -noout -text -in /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem 
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:23:02:61:a6:33:3e:fe:78:fb:ed:96:40:22:69:a3:ce:1e
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=R3
        Validity
            Not Before: May  3 14:58:06 2022 GMT
            Not After : Aug  1 14:58:05 2022 GMT
        Subject: CN=apache.tachtler.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b2:08:1c:50:e0:64:a1:00:20:f2:95:72:67:5f:
                    c7:a2:64:bd:d6:ff:5c:8b:ff:0e:55:f9:dc:1d:2c:
                    6a:85:91:fd:a5:7c:4b:18:ad:22:0d:80:2e:14:30:
                    1b:6c:cc:52:28:ef:ce:93:3e:27:50:bb:29:3a:18:
                    d0:3a:83:91:41:4e:f1:42:9a:2c:de:76:87:7f:5a:
                    94:f7:e4:f5:35:82:59:1e:8c:96:71:b0:62:98:46:
                    e8:36:8a:55:08:3f:1c:4f:06:e8:a2:2c:63:8f:ce:
                    d5:7e:56:b5:8d:82:ff:64:86:78:0b:1c:b5:f4:a3:
                    67:29:c2:64:81:60:12:f7:e6:28:67:e7:62:80:a8:
                    31:9e:6e:bc:f4:6e:b5:91:16:b0:2f:35:a6:f6:52:
                    7b:16:5c:d2:b7:0b:57:3e:39:dd:de:1d:3c:9c:cf:
                    ed:14:d7:f6:bf:df:56:b6:91:88:3e:e5:a4:86:35:
                    1d:01:27:07:f6:a3:16:ce:22:90:5f:43:24:3e:96:
                    17:d0:c2:8d:9d:d0:e2:e6:cf:70:80:7d:c6:17:69:
                    43:4e:78:dd:54:ff:37:34:81:ca:89:e5:2d:35:ee:
                    93:1f:50:c2:53:25:7f:4c:81:a0:95:46:0f:cd:78:
                    75:0f:a4:3e:56:ca:eb:40:d0:f8:4e:c5:a8:1b:b7:
                    5a:c9
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier: 
                15:E6:47:E2:A3:4C:2C:AA:11:6D:01:DF:70:7E:2A:73:9D:A4:F0:29
            X509v3 Authority Key Identifier: 
                keyid:14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6

            Authority Information Access: 
                OCSP - URI:http://r3.o.lencr.org
                CA Issuers - URI:http://r3.i.lencr.org/

            X509v3 Subject Alternative Name: 
                DNS:apache.tachtler.net, DNS:www.apache.tachtler.net
            X509v3 Certificate Policies: 
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org

            CT Precertificate SCTs: 
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : 29:79:BE:F0:9E:39:39:21:F0:56:73:9F:63:A5:77:E5:
                                BE:57:7D:9C:60:0A:F8:F9:4D:5D:26:5C:25:5D:C7:84
                    Timestamp : May  3 13:25:06.094 2022 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:76:22:8B:F9:AA:5C:19:2E:49:D5:27:35:
                                1F:62:27:FD:E3:ED:B3:82:14:6D:4D:5B:C1:61:E5:2F:
                                AD:A6:36:83:02:21:00:91:27:A1:A7:CE:2E:18:C8:F9:
                                57:7D:36:50:F4:2B:10:14:2A:76:4B:65:4C:66:D5:44:
                                E9:C0:EF:35:61:28:20
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : 41:C8:CA:B1:DF:22:46:4A:10:C6:A1:3A:09:42:87:5E:
                                4E:31:8B:1B:03:EB:EB:4B:C7:68:F0:90:62:96:06:F6
                    Timestamp : May  3 13:25:06.599 2022 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:44:02:20:1D:09:9C:CF:34:7C:E2:7D:B9:2C:53:38:
                                98:00:1E:5F:44:F4:B6:67:B5:AF:6E:80:CC:AB:6B:4C:
                                9C:56:81:1C:02:20:57:4C:9D:E8:6B:10:21:14:AC:0D:
                                BB:81:CF:FA:0C:D0:FD:48:AF:03:70:63:44:14:8E:71:
                                6A:39:AA:AB:82:4E
    Signature Algorithm: sha256WithRSAEncryption
         86:3e:cb:65:65:cc:8d:55:14:f9:46:f6:47:f1:1f:00:61:10:
         d9:c5:af:8c:54:f1:63:51:3b:9c:22:39:0a:b9:c1:2a:56:38:
         ae:36:5f:3c:a8:02:fc:10:d5:28:2d:d4:c0:c5:ee:9e:28:ee:
         57:2e:19:51:f7:20:d0:1b:26:f8:5b:0a:cb:1a:9f:8d:b5:56:
         50:52:e3:85:67:6d:5e:a5:d8:66:38:d7:6b:d4:50:12:6e:3a:
         16:0e:fe:08:92:b3:be:48:51:f4:13:c1:9b:7e:c3:bc:e7:24:
         d4:4e:a8:7b:b7:d7:1e:5e:cf:8c:b3:20:8e:ce:ec:8c:c0:b9:
         b6:e4:2b:2a:db:0a:c7:07:f3:e5:c9:26:df:97:8f:90:37:3c:
         08:85:24:be:c0:8c:74:19:1f:f3:fd:a4:ee:ba:c3:00:11:dc:
         81:81:68:9a:cc:3b:02:94:e8:6a:a3:25:fd:f6:4f:48:43:ae:
         98:25:d4:57:40:16:c1:2f:26:9a:e2:92:e9:00:ad:18:ee:df:
         6b:22:5e:ae:ce:df:28:88:ae:38:00:4f:a6:b4:78:d3:a3:95:
         51:ba:3b:bf:08:a3:72:e7:7e:43:cc:ac:e6:aa:19:28:ce:58:
         c8:12:92:92:85:c2:2f:06:92:f6:37:21:62:50:6d:b3:65:bf:
         36:18:bf:aa                

Wichtig sind hier die beiden Dateien:

  • /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem und
  • /etc/letsencrypt/live/apache.tachtler.net/privkey.pem

welche in der Konfigurationsdatei

  • /etc/httpd/conf/extra/httpd-ssl.conf

eingebunden werden müssen wie, unter nachfolgendem internen Link beschrieben:

Let's Encrypt - Certbot - DNS-01

Neben der Installation von Certbot soll bei der Nutzung des Let's Encrypt - Challenge Types - DNS-01 auch die Möglichkeit geschaffen werden, voll automatisiert beim jeweiligen DNS-Provider, dynamische DNS-Updates durchzuführen, damit eine Zertifikatserneuerung auch cron-Job bzw. systemd-timerd gesteuert ablaufen kann.

:!: WICHTIG - Nachfolgen wird der DNS-Provider Core Networks als Beispiel verwendet!

Certbot besitzt die Fähigkeit mittels Plugins - dynamische DNS-Updates durchzuführen. Eine Liste der gebräuchlichsten DNS-Plugins kann unter nachfolgendem externen Link eingesehen werden:

Zusätzliche DNS-Plugins können im Internet gefunden werden, wie das nachfolgende für die Verwendung mit dem hier verwendeten DNS-Provider - Core Networks unter nachfolgendem externen Link:

Let's Encrypt - pip - Installation

Zur Installation des pip wird nachfolgendes Paket benötigt:

  • python-pip - ist im extras-Repository von ArchLinux enthalten.

Mit nachfolgendem Befehl, wird das Pakete python-pip installiert:

# pacman -S --noconfirm python-pip

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket python-pip installiert wurden:

# pacman -Qil python-pip

Installierte Dateien

Let's Encrypt - pip: certbot-dns-corenetworks - Installation

Zur Installation des PyPi - certbot-dns-corenetworks wird nachfolgendes Paket benötigt:

Mit nachfolgendem Befehl, wird das Pakete certbot-dns-corenetworks installiert:

# pip install certbot-dns-corenetworks

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket certbot-dns-corenetworks installiert wurden:

# pip show certbot-dns-corenetworks

Installierte Dateien

Eine Überprüfung, ob das DNS-Plugin auch von genutzt werden kann, soll durch Ausgabe der Auflistung aller Plugins die kennt, mit nachfolgendem Befehl durchgeführt werden:

# certbot plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* dns-corenetworks
Description: Obtain certificates using a DNS TXT record (if you are using Core
Networks for your domains).
Interfaces: Authenticator, Plugin
Entry point: dns-corenetworks =
certbot_dns_corenetworks.dns_corenetworks:Authenticator

* standalone
Description: Spin up a temporary webserver
Interfaces: Authenticator, Plugin
Entry point: standalone = certbot._internal.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: Authenticator, Plugin
Entry point: webroot = certbot._internal.plugins.webroot:Authenticator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Let's Encrypt - pip: certbot-dns-corenetworks - Konfiguration: /etc/corenetworks.ini

Zur Konfiguration des des PyPi - certbot-dns-corenetworks DNS-Plugins muss eine Konfigurationsdatei, mit nachfolgenden Befehl angelegt werden, welche nachfolgenden Inhalt haben muss:

# vim /etc/corenetworks.ini

Nachfolgende der Inhalt der Konfigurationsdatei: /etc/corenetworks.ini

dns_corenetworks_username = Benutzername
dns_corenetworks_password = GeheimesPasswort

Anschliessend können noch mit nachfolgendem Befehl die Dateirechte wie folgt angepasst werden:

# chmod 400 /etc/corenetworks.ini

:!: WICHTIG - Die „Credentials“ können meist von/auf der Website des jeweiligen DNS-Providers bezogen/gesetzt werden!

Let's Encrypt - Certbot - DNS-01 - Zertifikatserstellung

Mit nachfoglendem Befehl kann mit dem ACME-Client Certbot ein Let's Encrypt-Zertifikat erstmals erstellt werden:

:!: HIWNEIS - Die Erstellung erfolgt als Wildcard-Zertifikat - aus Demonstrationsgründen aber für die Sub-Domäne !

# certbot certonly --test-cert --agree-tos --non-interactive -m webmaster@tachtler.net --authenticator dns-corenetworks --dns-corenetworks-credentials /etc/corenetworks.ini --dns-corenetworks-propagation-seconds 30 -d *.apache.tachtler.net

Erklärungen:

Parameter Beschreibung
certbot Ausführbares Programm des ACME-Client Certbot
certonly Subkommand um ein Zertifikat zu beantragen oder zu erneuern, ohne Installation
−−agree-tos Akzeptieren des Abonnentenvertrag des ACME-Servers
−m <E-Mail> E-Mail-Adresse für wichtige Kontobenachrichtigungen, z.B. Zertifikatsablauf
−−non-interactive Ausführung, ohne dass eine Benutzereingabe erforderlich ist
–authenticator <plugin> Angabe des zu verwendenden DNS-Plugins
−−webroot Dateien zur Authentifizierung in den Webroot-Ordner eines Servers erzeugen
–dns-corenetworks-credentials <file> Datei mit Credentials (Benutzername und Passwort) für den verwendeten DNS-Provider
–dns-corenetworks-propagation-seconds <n> Sekunden, die das DNS-Plugin warten soll, bis die DNS-Änderungen beim DNS-Provider durchgeführt sind
Zusätzliche Test-Parameter
−−test-cert Ausführung nicht gegen den produktiven Server von Let's Encrypt, sondern gegen den Test Server.
−−dry-run Testen von certonly oder auch renew, ohne ein Zertifikat auf der Festplatte zu speichern

Erstellung gegen die Test-CA von Let's Encrypt

# certbot certonly --test-cert --agree-tos --non-interactive -m webmaster@tachtler.net --authenticator dns-corenetworks --dns-corenetworks-credentials /etc/corenetworks.ini --dns-corenetworks-propagation-seconds 30 -d *.apache.tachtler.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for *.apache.tachtler.net
Waiting 30 seconds for DNS changes to propagate

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/apache.tachtler.net/privkey.pem
This certificate expires on 2022-08-02.
These files will be updated when the certificate renews.

NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the
certificate in the background, but you may need to take steps to enable that functionality. See
https://certbot.org/renewal-setup for instructions.

:!: HINWEIS - Das Löschen aller Verzeichnisse und Dateien aus der Erstellung gegen die Test-CA von Let's Encrypt, kann mit nachfolgendem Befehl erfolgen:

# rm -rf /etc/letsencrypt/*

Erstellung gegen die produktive CA von Let's Encrypt

# certbot certonly --agree-tos --non-interactive -m webmaster@tachtler.net --authenticator dns-corenetworks --dns-corenetworks-credentials /etc/corenetworks.ini --dns-corenetworks-propagation-seconds 30 -d *.apache.tachtler.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for *.apache.tachtler.net
Waiting 30 seconds for DNS changes to propagate

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/apache.tachtler.net/privkey.pem
This certificate expires on 2022-08-02.
These files will be updated when the certificate renews.

NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the
certificate in the background, but you may need to take steps to enable that functionality. See
https://certbot.org/renewal-setup for instructions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Falls das Erstellen eines Zertifikats erfolgreich durchgeführt worden ist, ist im Verzeichnis

  • /etc/letsencrypt/live

ein neues Unterverzeichnis mit dem Namen der ersten Domäne.tld hier

  • /etc/letsencrypt/live/apache.tachtler.net

erstellt worden, in dem alle benötigten Dateien vorhanden sind und welches einen Inhalt wie mit nachfolgendem Befehl abgerufen, zur Ansicht bringen sollte:

# ls -l /etc/letsencrypt/live/apache.tachtler.net/
total 20
lrwxrwxrwx 1 root root  43 May  4 19:54 cert.pem -> ../../archive/apache.tachtler.net/cert1.pem
lrwxrwxrwx 1 root root  44 May  4 19:54 chain.pem -> ../../archive/apache.tachtler.net/chain1.pem
lrwxrwxrwx 1 root root  48 May  4 19:54 fullchain.pem -> ../../archive/apache.tachtler.net/fullchain1.pem
lrwxrwxrwx 1 root root  46 May  4 19:54 privkey.pem -> ../../archive/apache.tachtler.net/privkey1.pem
-rw-r--r-- 1 root root 692 May  4 19:54 README

Eine Überprüfung, ob das Zertifikat auch korrekt ausgestellt wurde, kann mit nachfolgendem Befehl erfolgen:

# openssl x509 -noout -text -in /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:88:1d:ca:cf:62:42:97:08:c4:77:b0:f2:87:98:61:a1:c6
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = Let's Encrypt, CN = R3
        Validity
            Not Before: May  4 16:54:24 2022 GMT
            Not After : Aug  2 16:54:23 2022 GMT
        Subject: CN = *.apache.tachtler.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:a6:14:9a:de:a3:2f:18:51:1d:b4:f4:48:ba:01:
                    26:f6:38:7c:22:cd:76:25:e6:6a:54:6a:ec:a5:f1:
                    ea:53:70:5c:22:19:01:bc:82:d4:80:38:5f:d8:da:
                    1e:3f:ab:05:3b:1f:5b:55:9a:5c:e6:15:66:cd:d2:
                    42:63:b6:6c:9b:57:c5:ce:bc:14:75:6c:5e:77:7e:
                    fb:b1:36:f4:d6:79:70:2c:a9:62:d1:10:c5:c4:fb:
                    22:91:b8:84:8d:47:13:f7:87:4e:b4:1e:c6:6d:c4:
                    f6:5c:d0:73:5e:86:8c:59:a7:26:f2:df:7a:25:c6:
                    b9:79:28:c6:27:c7:42:cc:0e:b2:46:83:00:25:c2:
                    8e:ca:09:39:9f:93:d2:82:ab:52:1c:7f:c9:86:e2:
                    16:4e:69:40:23:6a:f2:9b:f5:1e:56:4f:33:c9:ff:
                    81:8a:7e:ed:5e:83:e2:5c:e3:e3:e4:2b:e6:30:d6:
                    5a:5f:0f:81:81:02:99:c4:5e:33:10:7e:6e:91:dc:
                    09:f8:e2:34:dc:39:c8:db:19:30:43:f5:8a:39:60:
                    32:49:0e:0b:d6:6d:b4:84:c6:97:7a:3d:2b:3c:02:
                    7d:1b:dd:bd:67:e8:31:05:12:82:b5:7d:68:41:d9:
                    2d:d3:52:d8:e4:93:95:da:a7:ec:4d:bc:d3:0c:d4:
                    21:e9
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier: 
                28:05:31:53:95:CC:64:52:37:C9:93:33:DF:FA:8F:50:AA:F2:1F:62
            X509v3 Authority Key Identifier: 
                keyid:14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6

            Authority Information Access: 
                OCSP - URI:http://r3.o.lencr.org
                CA Issuers - URI:http://r3.i.lencr.org/

            X509v3 Subject Alternative Name: 
                DNS:*.apache.tachtler.net
            X509v3 Certificate Policies: 
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org

            CT Precertificate SCTs: 
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : DF:A5:5E:AB:68:82:4F:1F:6C:AD:EE:B8:5F:4E:3E:5A:
                                EA:CD:A2:12:A4:6A:5E:8E:3B:12:C0:20:44:5C:2A:73
                    Timestamp : May  4 17:54:24.973 2022 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:44:02:20:06:33:94:D4:7D:1C:4B:81:85:37:55:8E:
                                C6:40:34:1D:75:8F:BC:55:95:D9:11:02:2D:1F:09:28:
                                DE:B9:B7:CD:02:20:61:A0:84:3B:B8:E7:EF:61:47:24:
                                49:6E:86:BB:1F:BA:76:28:AF:3D:65:28:67:B5:05:59:
                                F6:50:95:2C:71:6A
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : 29:79:BE:F0:9E:39:39:21:F0:56:73:9F:63:A5:77:E5:
                                BE:57:7D:9C:60:0A:F8:F9:4D:5D:26:5C:25:5D:C7:84
                    Timestamp : May  4 17:54:24.960 2022 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:46:02:21:00:C2:7E:FD:0B:6C:86:2D:AA:EC:85:54:
                                D3:64:7A:A0:B8:46:40:72:0D:43:0D:65:C6:9E:8B:E3:
                                19:3F:A8:B6:67:02:21:00:8C:5A:04:FE:FA:9B:0D:1F:
                                C7:4F:4B:C7:B9:C5:18:D3:8B:E4:BF:33:F9:58:34:41:
                                54:98:80:AF:57:3B:41:6A
    Signature Algorithm: sha256WithRSAEncryption
         00:3d:ec:cc:25:c4:77:ab:ff:68:f5:ef:af:f8:7d:d4:a3:d1:
         cf:7a:83:9f:72:b2:8d:da:89:bb:5d:eb:38:eb:b5:75:43:3f:
         0d:bf:6b:fa:42:4f:d0:27:15:2c:1d:54:44:f2:45:b2:71:a9:
         47:b8:9b:ed:e7:80:1d:0b:7f:30:ef:b0:49:64:d6:ab:4e:0f:
         67:82:72:de:d5:c6:71:ca:43:20:7c:f1:c2:03:35:90:dc:30:
         82:40:4c:b0:22:c3:58:30:a3:1e:71:6f:8b:2f:86:62:61:d3:
         72:f0:16:e2:7c:74:db:ac:05:9f:93:0e:3e:52:56:96:da:7a:
         8a:75:69:47:09:7f:da:ed:e4:96:f0:dc:74:c9:2d:2d:8c:5f:
         44:33:29:f7:9c:a6:8f:3f:a1:ac:5b:e6:16:a9:ae:ea:9c:4b:
         69:46:24:9d:b2:bd:5d:fc:ce:f8:6c:12:a6:f6:78:7d:9f:7b:
         ca:c1:5b:c7:ed:79:c5:06:56:78:d2:bd:7c:7f:eb:d5:22:eb:
         72:f4:e9:48:68:52:75:fe:65:a4:da:ae:03:47:ff:6a:0d:e3:
         f6:b9:26:35:c3:84:d5:18:c3:13:79:95:82:2e:a9:78:3a:88:
         a6:b4:ba:c3:e8:b6:0a:cc:f4:e0:51:2c:1a:7f:fe:14:bb:11:
         69:cb:f0:cf             

Wichtig sind hier die beiden Dateien:

  • /etc/letsencrypt/live/apache.tachtler.net/fullchain.pem und
  • /etc/letsencrypt/live/apache.tachtler.net/privkey.pem

welche in der Konfigurationsdatei

  • /etc/httpd/conf/extra/httpd-ssl.conf

eingebunden werden müssen wie, unter nachfolgendem internen Link beschrieben:

Let's Encrypt - Apache - SSL-Konfiguration

Let's Encrypt - Apache: /etc/httpd/conf/httpd.conf

Abschliessend ist es noch erforderlich, nachfolgende Konfigurationsdatei

  • /etc/httpd/conf/httpd.conf

zu ändern, das die nachfolgend auskommentierte Zeile, in der eine weitere Konfigurationsdatei

  • /etc/httpd/conf/extra/httpd-ssl.conf

mit angezogen wird:

(Nur relevanter Ausschnitt):

# Secure (SSL/TLS) connections
# Tachtler
# default: #Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Erklärungen:

  • Include conf/extra/httpd-ssl.conf

Einkommentieren der bereits vorbereiteten aber standardmässig auskommentierten Zeile, das die Konfigurationsdatei, welche die SSL-Konfiguration beinhaltet, auch inkludiert wird.

Let's Encrypt - Apache - Neustart Apache HTTPD Server mit Zertifikat

Es muss nun ein abschliessender Neustart erfolgen, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl restart httpd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

Let's Encrypt - Apache - Test

Wenn ein erneuter Neustart des Apache HTTP Server erfolgreich durchgeführt wurde, kann die Abfrage mittels eines Browsers durch Eingabe nachfolgender URL

erfolgen, wie im nachfolgenden Bild dargestellt:

ArchLinux - Apache HTTP Server - Mozilla Firefox - Let's Encrypt - Apache - Test HTTPS

:!: HINWEIS - Der Aufruf der Seite erfolgt verschlüsselt mittels Eingabe von https://apache.tachtler.net !

:!: HIWNEIS - Die Erstellung bei DNS-01 erfolgte als Wildcard-Zertifikat - aus Demonstrationsgründen für die Sub-Domäne *.apache.tachtler.net !

ArchLinux - Apache HTTP Server - Mozilla Firefox - Let's Encrypt - Apache - Test HTTPS - Wildcard

:!: HINWEIS - Der Aufruf der Seite erfolgt verschlüsselt mittels Eingabe von https://www.apache.tachtler.net !

OCSP Stapling

OSCP (Online Certificate Status Protocol) Stapling, auch besser als eine TLS-Zertifikatsstatusabfrage-Erweiterung bekannt, ist ein weiterer Ansatz um den Gültigkeitsstatus von digitalen Zertifikaten zu prüfen. Es ermöglicht dem Apache HTTP Server, die Aufgabe der Zertifikatsvalidierung zu übernehmen, indem er eine von der Zertifizierungsstelle signierte OCSP-Antwort mit Zeitstempel an den ursprünglichen TLS-Handshake anhängt („stapling“). Dies verringert den Kommunikationsaufwand zwischen Clients und Zertifizierungsstellen deutlich, da der Client nicht bei der Zertifizierungsstellen eine OSCP-Anfrage stellen muss, sondern diese bereits vom Apache HTTP Server mit geliefert bekommt.

Zur Einrichtung von OSCP (Online Certificate Status Protocol) Stapling ist nachfolgende Konfigurationsdatei anzupassen:

OCSP Stapling - Apache: /etc/httpd/conf/extra/httpd-ssl.conf

Nachfolgende Konfigurationsdatei

  • /etc/httpd/conf/extra/httpd-ssl.conf

muss so abgeändert werden:

(Nur relevanter Ausschnitt):

#   OCSP Stapling (requires OpenSSL 0.9.8h or later)
#
#   This feature is disabled by default and requires at least
#   the two directives SSLUseStapling and SSLStaplingCache.
#   Refer to the documentation on OCSP Stapling in the SSL/TLS
#   How-To for more information.
#
#   Enable stapling for all SSL-enabled servers:
# Tachtler
# default: #SSLUseStapling On
SSLUseStapling On
 
#   Define a relatively small cache for OCSP Stapling using
#   the same mechanism that is used for the SSL session cache
#   above.  If stapling is used with more than a few certificates,
#   the size may need to be increased.  (AH01929 will be logged.)
# Tachtler
# default: #SSLStaplingCache "shmcb:/run/httpd/ssl_stapling(32768)"
SSLStaplingCache "shmcb:/run/httpd/ssl_stapling(131072)"

Erklärungen:

  • SSLUseStapling On

Einkommentieren der bereits vorbereiteten aber standardmässig auskommentierten Zeile, das OSCP (Online Certificate Status Protocol) Stapling im Apache HTTP Server aktiviert wird.

  • SSLStaplingCache "shmcb:/run/httpd/ssl_stapling(131072)"

Konfiguriert den Cache, der zum Speichern von OSCP (Online Certificate Status Protocol) Stapling-Antworten verwendet wird, die in den TLS-Handshake aufgenommen werden, wenn SSLUseStapling aktiviert ist. Die Konfiguration eines Caches ist für OSCP (Online Certificate Status Protocol) Stapling zwingend erforderlich.

OCSP Stapling - Apache - Neustart Apache HTTPD Server

Es muss nun ein abschliessender Neustart erfolgen, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl restart httpd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

OCSP Stapling - Apache - Test

Nachfolgende Abfrage ermöglicht es zu testen, ob der Apache HTTP Server tatsächlich eine SCP (Online Certificate Status Protocol) Stapling-Antworten beim TLS-Handshake mit anhängt bzw. „voranstellt“:

# openssl s_client -connect apache.tachtler.net:443 -status | more

(Nur relevanter Ausschnitt):

OCSP response: 
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = US, O = Let's Encrypt, CN = R3
    Produced At: Jun  5 01:25:00 2022 GMT
    Responses:
    Certificate ID:
      Hash Algorithm: sha1
      Issuer Name Hash: 48DAC9A0FB2BD32D4FF0DE68D2F567B735F9B3C4
      Issuer Key Hash: 142EB317B75856CBAE500940E61FAF9D8B14C2C6
      Serial Number: 03230261A6333EFE78FBED96402269A3CE1E
    Cert Status: good
    This Update: Jun  5 01:00:00 2022 GMT
    Next Update: Jun 12 00:59:58 2022 GMT

    Signature Algorithm: sha256WithRSAEncryption
         41:cf:b5:93:5a:bd:f4:e3:e4:63:87:db:d8:67:f2:cf:3b:6c:
         06:c7:e8:83:78:04:fe:c3:67:07:4c:33:e6:65:e6:a1:0e:34:
         18:be:17:18:fa:ba:37:c2:43:73:63:e3:c8:4f:7b:9d:7f:74:
         37:e5:cb:2d:8b:8d:1d:2c:38:c3:fc:c6:75:d8:95:5d:06:f9:
         59:78:4d:d7:62:94:1c:5d:00:b6:f0:e7:69:1d:30:23:dc:a9:
         5d:80:ec:ae:45:af:69:58:e0:3c:90:e6:44:1d:48:90:03:b3:
         80:e0:84:38:a2:d4:d1:87:32:ce:45:22:cd:6e:04:72:f6:76:
         de:dd:62:89:a2:5b:61:3f:36:6a:85:0e:06:42:bf:9e:7f:7a:
         28:fc:05:6d:80:fd:d1:93:4e:be:48:81:67:da:0a:82:2a:d6:
         f9:79:d7:30:7d:78:2a:68:ef:7c:e7:a1:d3:2d:3e:76:c8:42:
         e8:12:39:f7:10:7d:c0:40:07:d6:2c:ac:f5:1a:ba:98:46:17:
         85:b7:18:3c:62:21:62:8c:0d:19:e7:ff:0a:93:a3:f1:60:cb:
         fb:d4:c9:5c:1f:7d:0c:3b:1a:e5:ec:cd:94:7b:22:90:8f:84:
         ec:3f:82:0e:5e:14:96:80:3a:33:74:b1:4d:b7:87:f9:ab:a3:
         77:d7:04:3a
======================================

:!: HINWEIS - Die Abfrage/OpenSSL-Client-Verbindung kann durch Drücken der Tastenkombination [Strg]-[c] beendet werden.

:!: HINWEIS - Wichtig sind hier die beiden Zeilen:

  • CSP Response Status: successful (0x0) und
  • Cert Status: good

SSL-Ciphers - Apache

Unter nachfolgendem Link kann eine „Empfehlung“ eingeholt werden, welche Cipher (Verschlüsselungs-Algorithmen) beim Apache HTTP Server zur Kommunikation mit den Clients (z.B. Browsern oder mobile Geräte) ausgehandelt werden sollen.

:!: ACHTUNG - Zu restriktive Einstellungen, können die Erreichbarkeit des Apache HTTP Server mindern, jedoch zu tolerante Einstellungen können die sichere Kommunikation gefährden. Es ist eine genaue Abwägung zu treffen und zu berücksichtigen, wer die Clients sind, welche auf den Apache HTTP Server zugreifen!

Siehe auch nachfolgenden externen Link:

:!: HINWEIS - Die Einstellungen zu den Direktiven

  • SSLHonorCipherOrder mit dem Wert off
  • SSLSessionTickets mit dem Wert off

sollten NICHT gesetzt werden, diese sollten auf on gesetzt bzw. belassen werden!

Erklärungen:

  • SSLHonorCipherOrder On

Bei der Auswahl von Cipher (Verschlüsselungs-Algorithmen) während eines SSLv3- oder TLSv1-Handshake mit einem Client (z.B. Browsern oder mobile Geräte) wird normalerweise die Präferenz des Clients verwendet. Wenn diese Direktive aktiviert ist, wird stattdessen die Präferenz des Servers verwendet. Dies ist NICHT die Standard-Einstellung, ist aber explizit gesetzt!

  • SSLSessionTickets On

Dies ist die Standard-Einstellung und ist normalerweise nicht explizit in der Konfigurationsdatei /etc/httpd/conf/extra/httpd-ssl.conf gesetzt. Diese Direktive bewirkt die Verwendung von TLS-Sitzungstickets (RFC 5077). Das „SSLSessionTicket“ ist dank einem Prozess bei den das „SSLSessionTicket“ signiert wird, ebenfalls als sicher einzustufen. Das ändert aber nichts an der Tatsache, dass zumindest eine Verwundbarkeit besteht, indem die Session Parameter theoretisch Client-seitig gestohlen werden könnten. Es handelt sich also auch um eine Frage, ob man die Angreifbarkeit auf Kosten von Performance reduzieren sollte.

Ein Aufruf mit nachfolgenden Parametern ergab nachfolgende Antwort:

moz://a SSL Configuration Generator - Apache - Intermediate - Server Version: 2.4.53 - OpenSSL Version: 1.1.1o - HTTP Strict Transport Security: deaktiviert

moz://a SSL Configuration Generator - Apache - Intermediate - Server Version: 2.4.53 - OpenSSL Version: 1.1.1o - HTTP Strict Transport Security: deaktiviert

SSL-Ciphers - Apache: /etc/httpd/conf/extra/httpd-ssl.conf

Nachfolgende Konfigurationsdatei

  • /etc/httpd/conf/extra/httpd-ssl.conf

muss so abgeändert werden:

(Nur relevanter Ausschnitt):

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate,
#   and that httpd will negotiate as the client of a proxied server.
#   See the OpenSSL documentation for a complete list of ciphers, and
#   ensure these follow appropriate best practices for this deployment.
#   httpd 2.2.30, 2.4.13 and later force-disable aNULL, eNULL and EXP ciphers,
#   while OpenSSL disabled these by default in 0.9.8zf/1.0.0r/1.0.1m/1.0.2a.
# Tachtler
# default: SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
# default: SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
 
#  By the end of 2016, only TLSv1.2 ciphers should remain in use.
#  Older ciphers should be disallowed as soon as possible, while the
#  kRSA ciphers do not offer forward secrecy.  These changes inhibit
#  older clients (such as IE6 SP2 or IE8 on Windows XP, or other legacy
#  non-browser tooling) from successfully connecting.  
#
#  To restrict mod_ssl to use only TLSv1.2 ciphers, and disable
#  those protocols which do not support forward secrecy, replace
#  the SSLCipherSuite and SSLProxyCipherSuite directives above with
#  the following two directives, as soon as practical.
# SSLCipherSuite HIGH:MEDIUM:!SSLv3:!kRSA
# SSLProxyCipherSuite HIGH:MEDIUM:!SSLv3:!kRSA
 
#   User agents such as web browsers are not configured for the user's
#   own preference of either security or performance, therefore this
#   must be the prerogative of the web server administrator who manages
#   cpu load versus confidentiality, so enforce the server's cipher order.
SSLHonorCipherOrder on
 
#   SSL Protocol support:
#   List the protocol versions which clients are allowed to connect with.
#   Disable SSLv3 by default (cf. RFC 7525 3.1.1).  TLSv1 (1.0) should be
#   disabled as quickly as practical.  By the end of 2016, only the TLSv1.2
#   protocol or later should remain in use.
# Tachtler
# default: SSLProtocol all -SSLv3
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
# Tachtler
# default: SSLProxyProtocol all -SSLv3
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1

Erklärungen:

  • SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Diese komplexe Direktive verwendet eine durch Doppelpunkte getrennte Cipher-Zeichenkette, die aus OpenSSL-Cipher-Spezifikationen besteht, um die Cipher Suite zu konfigurieren, die der Client in der SSL-Handshake-Phase aushandeln darf. Der optionale Protokollspezifizierer kann die Cipher Suite für eine bestimmte SSL-Version konfigurieren.

  • SSLProxyCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Diese Direktive kann verwendet werden, um die SSL-Protokollvarianten zu steuern, die mod_ssl beim Aufbau seiner Serverumgebung für Proxy verwenden soll. Es wird sich nur mit Servern verbinden, die eines der angegebenen Protokolle verwenden. Siehe auch die Erklärungen zu: SSLCipherSuite

  • SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

Diese Direktive kann verwendet werden, um zu steuern, welche Versionen des SSL/TLS-Protokolls bei neuen Verbindungen akzeptiert werden.

  • SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1

Mit dieser Direktive kann gesteuert werden, welche SSL-Protokollvarianten mod_ssl verwenden soll, wenn es seine Serverumgebung für Proxy einrichtet. Es wird sich nur mit Servern verbinden, die eines der angegebenen Protokolle verwenden. Siehe auch die Erklärungen zu: SSLProtocol

SSL-Ciphers - Apache - Neustart Apache HTTPD Server

Es muss nun ein abschliessender Neustart erfolgen, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl restart httpd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

SSL-Ciphers - Apache - Test

Unter nachfolgendem Link kann eine „Überprüfung“ durchgeführt werden, welche Cipher (Verschlüsselungs-Algorithmen) beim Apache HTTP Server zur Kommunikation mit den Clients (z.B. Browsern oder mobile Geräte) ausgehandelt werden können.

Siehe auch nachfolgenden externen Link:

Ein Aufruf mit nachfolgenden Parametern ergab nachfolgende Antwort:

Qualys SSL Labs - SSL-Server Test - Hostname: apache.tachtler.net - Do not show the results on the boards: aktiviert

Qualys SSL Labs - SSL-Server Test - Hostname: apache.tachtler.net - Do not show the results on the boards: aktiviert

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/apache_http_server_archlinux_-_mod_ssl_-_verschluesselung_https.txt · Zuletzt geändert: 2022/06/11 09:22 von klaus