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:

  • 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 !

:!: FIXME Hier geht es auch weiter… / To be continued too…

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/05/06 08:58 von klaus