Raspbian Jessie: HTTPS mit Apache2 und OpenSSL
Wie bereits in der Anleitung Raspbian Jessie: Webserver mit Apache2, PHP und MySQL installieren beschrieben ist ein Webserver mit Apache2 sehr schnell konfiguriert. Standardmäßig lässt dieser aber nur unverschlüsselte Zugriffe über das HTTP-Protokoll (Hypertext Transfer Protocol) zu. Sollten Sie auf Sicherheit achten, können Sie Apache2 um die Unterstützung von SSL (Secure Sockets Layer) erweitern und so das HTTPS-Protokoll (Hypertext Transfer Protocol Secure) für den verschlüsselten Zugriff auf den Webserver nutzen.
Die folgende Anleitung soll Ihnen zeigen, wie Sie auf Ihrem Raspberry Pi unter Raspbian den Webserver Apache2 installieren, mit OpenSSL die benötigten Zertifikate für einen verschlüsselten Zugriff auf den Webserver erstellen und diese in Apache2 einbinden. Als Grundlage für die folgende Anleitung wurde das momentan aktuelle Raspbian Jessie Lite Image vom 23.09.2016 verwendet.
Apache2 installieren
Sollten Sie Apache2 noch nicht installiert haben, können Sie Apache2 wie folgt installieren. Bevor Sie jedoch mit der Installation loslegen, sollten Sie die lokale Paketdatenbank aktualisieren.
pi@raspberrypi ~ $ sudo apt-get update
Mit dem nachfolgenden Befehl können Sie jetzt den Webserver Apache2 installieren.
pi@raspberrypi ~ $ sudo apt-get install apache2
Im Anschluss an die Installation wird in der Regel der Apache2-Daemon automatisch gestartet. Dies können Sie mit dem folgenden Befehl überprüfen.
pi@raspberrypi ~ $ sudo /etc/init.d/apache2 status
Eigene Certificate Authority (CA) einrichten
Zuerst erstellen Sie ein Verzeichnis in welchem die nachfolgenden Zertifikate erstellt und aufbewahrt werden.
pi@raspberrypi ~ $ sudo mkdir -p /etc/ssl/apache2/certs
Erstellen Sie jetzt mit dem folgenden Befehl einen Certificate Authority (CA) Schlüssel. Während diesem Vorgang müssen Sie ein Passwort vergeben welches Sie im weiteren Verlauf noch öfters benötigen werden.
pi@raspberrypi ~ $ sudo openssl genrsa -des3 -out /etc/ssl/apache2/certs/ca.key 2048
Generating RSA private key, 2048 bit long modulus
..............+++
................+++
e is 65537 (0x10001)
Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
Verifying - Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
Generating RSA private key, 2048 bit long modulus
..............+++
................+++
e is 65537 (0x10001)
Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
Verifying - Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
Nachdem der CA-Schlüssel erstellt wurde, wird die Certificate Authority erzeugt. Mit dem Parameter -days wird angegeben wie lange der Schlüssel gültig sein soll (hier 10 Jahre).
pi@raspberrypi ~ $ sudo openssl req -new -x509 -days 3650 -key /etc/ssl/apache2/certs/ca.key -out /etc/ssl/apache2/certs/ca.crt
Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:Brennberg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:ca.home.lan
Email Address []:root@localhost
Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:Brennberg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:ca.home.lan
Email Address []:root@localhost
Mit dem folgenden Befehl können Sie sich die Details des Zertifikats ansehen.
pi@raspberrypi ~ $ openssl x509 -in /etc/ssl/apache2/certs/ca.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
9f:23:ad:51:86:e1:9c:4d
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=ca.home.lan/emailAddress=root@localhost
Validity
Not Before: Nov 22 19:28:20 2016 GMT
Not After : Nov 20 19:28:20 2026 GMT
Subject: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=ca.home.lan/emailAddress=root@localhost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:bf:1f:2c:6e:23:d2:51:a9:2f:35:20:96:98:04:
4a:7a:c2:b7:f3:e1:06:8a:cf:ef:ae:09:46:f2:e2:
f2:c3:f7:86:64:65:58:52:6e:f5:e9:20:b6:2f:ee:
2c:6a:2b:20:40:4a:38:00:f8:fa:4e:5a:26:89:26:
c5:d8:d6:4c:5f:32:e6:8d:f7:2f:f6:16:10:16:b5:
36:03:9c:68:10:39:fd:76:33:04:ed:d3:58:0f:b9:
4f:d7:cc:1e:a3:68:bf:f0:dc:cb:21:fc:65:54:08:
a1:ae:85:f5:e0:10:e7:59:71:d7:82:8e:2f:1a:83:
35:b3:c2:b9:12:0e:e7:46:b9:d1:b9:29:03:bb:72:
03:40:65:15:f6:18:7d:c2:ea:93:8b:a8:f7:fa:44:
82:37:4b:7c:36:99:51:e6:50:55:e1:e1:5c:1e:ab:
63:b7:cd:15:7b:ad:e1:75:61:39:b1:ae:24:f6:28:
50:ec:f6:f0:ca:68:8b:48:55:7c:27:7a:47:10:5c:
0c:a7:a9:d6:fd:d2:17:ca:e8:e3:9c:23:8c:b8:46:
b5:dd:0c:d9:d6:29:98:45:1b:ba:11:64:2c:70:97:
de:da:4c:71:36:ea:e4:bf:fd:8a:0b:f2:94:ec:37:
ee:34:68:95:74:c2:07:e4:25:90:09:7c:14:5e:ee:
20:bb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
E5:D7:F7:15:F0:1B:2D:68:8A:04:66:FB:6B:B9:67:9A:48:C9:A4:C0
X509v3 Authority Key Identifier:
keyid:E5:D7:F7:15:F0:1B:2D:68:8A:04:66:FB:6B:B9:67:9A:48:C9:A4:C0
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
bd:a3:a1:6c:bd:f4:5d:af:b4:36:20:1f:d0:57:e3:6f:9d:64:
d2:fa:29:09:6b:d2:86:d9:b7:80:c7:7a:7d:47:ff:ad:7b:27:
69:a8:9f:a2:17:7c:63:2c:8c:95:11:6e:27:59:ab:7b:47:44:
15:f1:68:20:6c:20:1e:4c:73:6d:87:5d:fe:d3:1b:af:02:98:
8f:64:f6:2d:7d:61:d6:ba:a1:a3:11:c5:15:7c:8e:b6:14:e1:
0e:61:22:aa:b8:4b:8f:16:1b:f8:2f:6e:56:0f:45:06:7a:c1:
0e:54:34:a4:08:f5:b4:5a:c5:21:0f:36:89:44:68:3d:c3:b1:
6d:51:58:a8:a3:91:13:43:d9:cb:dd:e6:e5:2f:2f:65:dc:a4:
71:d1:b7:a1:f1:3e:a2:bf:1d:38:c5:a1:ec:95:05:24:fa:b0:
0a:a0:1c:2c:f1:7d:e5:7b:2e:18:cd:41:22:dd:44:f5:00:ce:
01:ce:76:49:f4:86:dd:fe:e1:eb:d8:a4:fb:ee:01:bc:af:61:
21:30:42:b4:ac:4c:0f:c1:46:00:93:42:23:38:93:c8:57:3e:
82:d7:f9:99:c2:fa:18:cc:6f:65:aa:6c:59:54:24:ac:a6:d8:
f0:ad:55:e5:35:d5:14:6d:2f:9f:3a:6c:5e:18:13:02:24:2e:
f4:dd:43:35
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
9f:23:ad:51:86:e1:9c:4d
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=ca.home.lan/emailAddress=root@localhost
Validity
Not Before: Nov 22 19:28:20 2016 GMT
Not After : Nov 20 19:28:20 2026 GMT
Subject: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=ca.home.lan/emailAddress=root@localhost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:bf:1f:2c:6e:23:d2:51:a9:2f:35:20:96:98:04:
4a:7a:c2:b7:f3:e1:06:8a:cf:ef:ae:09:46:f2:e2:
f2:c3:f7:86:64:65:58:52:6e:f5:e9:20:b6:2f:ee:
2c:6a:2b:20:40:4a:38:00:f8:fa:4e:5a:26:89:26:
c5:d8:d6:4c:5f:32:e6:8d:f7:2f:f6:16:10:16:b5:
36:03:9c:68:10:39:fd:76:33:04:ed:d3:58:0f:b9:
4f:d7:cc:1e:a3:68:bf:f0:dc:cb:21:fc:65:54:08:
a1:ae:85:f5:e0:10:e7:59:71:d7:82:8e:2f:1a:83:
35:b3:c2:b9:12:0e:e7:46:b9:d1:b9:29:03:bb:72:
03:40:65:15:f6:18:7d:c2:ea:93:8b:a8:f7:fa:44:
82:37:4b:7c:36:99:51:e6:50:55:e1:e1:5c:1e:ab:
63:b7:cd:15:7b:ad:e1:75:61:39:b1:ae:24:f6:28:
50:ec:f6:f0:ca:68:8b:48:55:7c:27:7a:47:10:5c:
0c:a7:a9:d6:fd:d2:17:ca:e8:e3:9c:23:8c:b8:46:
b5:dd:0c:d9:d6:29:98:45:1b:ba:11:64:2c:70:97:
de:da:4c:71:36:ea:e4:bf:fd:8a:0b:f2:94:ec:37:
ee:34:68:95:74:c2:07:e4:25:90:09:7c:14:5e:ee:
20:bb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
E5:D7:F7:15:F0:1B:2D:68:8A:04:66:FB:6B:B9:67:9A:48:C9:A4:C0
X509v3 Authority Key Identifier:
keyid:E5:D7:F7:15:F0:1B:2D:68:8A:04:66:FB:6B:B9:67:9A:48:C9:A4:C0
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
bd:a3:a1:6c:bd:f4:5d:af:b4:36:20:1f:d0:57:e3:6f:9d:64:
d2:fa:29:09:6b:d2:86:d9:b7:80:c7:7a:7d:47:ff:ad:7b:27:
69:a8:9f:a2:17:7c:63:2c:8c:95:11:6e:27:59:ab:7b:47:44:
15:f1:68:20:6c:20:1e:4c:73:6d:87:5d:fe:d3:1b:af:02:98:
8f:64:f6:2d:7d:61:d6:ba:a1:a3:11:c5:15:7c:8e:b6:14:e1:
0e:61:22:aa:b8:4b:8f:16:1b:f8:2f:6e:56:0f:45:06:7a:c1:
0e:54:34:a4:08:f5:b4:5a:c5:21:0f:36:89:44:68:3d:c3:b1:
6d:51:58:a8:a3:91:13:43:d9:cb:dd:e6:e5:2f:2f:65:dc:a4:
71:d1:b7:a1:f1:3e:a2:bf:1d:38:c5:a1:ec:95:05:24:fa:b0:
0a:a0:1c:2c:f1:7d:e5:7b:2e:18:cd:41:22:dd:44:f5:00:ce:
01:ce:76:49:f4:86:dd:fe:e1:eb:d8:a4:fb:ee:01:bc:af:61:
21:30:42:b4:ac:4c:0f:c1:46:00:93:42:23:38:93:c8:57:3e:
82:d7:f9:99:c2:fa:18:cc:6f:65:aa:6c:59:54:24:ac:a6:d8:
f0:ad:55:e5:35:d5:14:6d:2f:9f:3a:6c:5e:18:13:02:24:2e:
f4:dd:43:35
Schlüssel und Zertifikat für den Webserver erstellen
Nachdem Sie Ihre eigene Certificate Authority (CA) eingerichtet haben, können Sie jetzt den Schlüssel und das Zertifikat für den Webserver erstellen. Zuerst erstellen Sie einen privaten RSA-Schlüssel für den Webserver.
pi@raspberrypi ~ $ sudo openssl genrsa -des3 -out /etc/ssl/apache2/certs/server.key 1024
Generating RSA private key, 1024 bit long modulus
..............++++++
........++++++
e is 65537 (0x10001)
Enter pass phrase for /etc/ssl/apache2/certs/server.key:StrengGeheim
Verifying - Enter pass phrase for /etc/ssl/apache2/certs/server.key:StrengGeheim
Generating RSA private key, 1024 bit long modulus
..............++++++
........++++++
e is 65537 (0x10001)
Enter pass phrase for /etc/ssl/apache2/certs/server.key:StrengGeheim
Verifying - Enter pass phrase for /etc/ssl/apache2/certs/server.key:StrengGeheim
Anschließend erzeugen Sie einen Certificate Signing Request (CSR) für den Server.
Hinweis: Als Common Name müssen Sie den Domain Namen angeben über welchen der Webserver angesprochen wird.
pi@raspberrypi ~ $ sudo openssl req -new -key /etc/ssl/apache2/certs/server.key -out /etc/ssl/apache2/certs/server.csr
Enter pass phrase for /etc/ssl/apache2/certs/server.key:StrengGeheim
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:Brennberg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:raspberrypi.home.lan
Email Address []:root@localhost
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Enter pass phrase for /etc/ssl/apache2/certs/server.key:StrengGeheim
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:Brennberg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:raspberrypi.home.lan
Email Address []:root@localhost
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Mit dem nächsten Befehl wird das Zertifikat für den Webserver erzeugt.
pi@raspberrypi ~ $ sudo openssl x509 -req -in /etc/ssl/apache2/certs/server.csr -out /etc/ssl/apache2/certs/server.crt -sha1 -CA /etc/ssl/apache2/certs/ca.crt -CAkey /etc/ssl/apache2/certs/ca.key -CAcreateserial -days 3650
Signature ok
subject=/C=DE/ST=Bayern/L=Brennberg/O=Privat/OU=IT/CN=raspberrypi.home.lan/emailAddress=root@localhost
Getting CA Private Key
Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
Signature ok
subject=/C=DE/ST=Bayern/L=Brennberg/O=Privat/OU=IT/CN=raspberrypi.home.lan/emailAddress=root@localhost
Getting CA Private Key
Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim
Auch hier können Sie sich die Details des Zertifikats anzeigen lassen.
pi@raspberrypi ~ $ openssl x509 -in /etc/ssl/apache2/certs/server.crt -text -noout
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
81:8c:97:f7:da:61:f8:cf
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=ca.home.lan/emailAddress=root@localhost
Validity
Not Before: Nov 22 19:31:18 2016 GMT
Not After : Nov 20 19:31:18 2026 GMT
Subject: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=raspberrypi.home.lan/emailAddress=root@localhost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:d8:e1:e9:10:25:9d:aa:af:7f:f4:c7:95:3e:c0:
4c:3f:f1:23:fd:81:4c:30:d4:1f:04:bb:c5:76:a7:
64:66:81:f9:cd:21:56:db:07:d0:87:22:74:76:2d:
1c:c7:8a:6d:47:83:fc:8d:c2:15:e4:02:f9:82:3b:
29:91:2e:cd:53:a2:7d:a2:18:fb:d3:d1:7a:47:ef:
96:f6:5a:6f:18:d2:af:51:66:7f:78:fa:85:63:56:
f6:56:b6:5c:91:25:41:39:e6:97:c3:89:2f:c3:8f:
87:7f:84:cd:67:5d:4d:fb:64:42:99:0d:2d:8c:00:
0d:35:25:4c:60:59:1e:6c:db
Exponent: 65537 (0x10001)
Signature Algorithm: sha1WithRSAEncryption
9a:0d:6a:c7:4b:c8:78:ab:c7:7b:3d:54:93:36:c0:2a:69:47:
d3:88:d2:ff:b3:7d:4a:69:39:3d:d4:d8:20:8f:10:4d:21:2a:
ba:bd:b1:8d:78:a7:30:16:34:68:71:65:4e:01:f0:49:c4:00:
74:01:0f:a8:26:88:d7:d6:5c:03:a1:38:e3:6c:c2:79:67:64:
ad:e3:ab:6d:13:f9:37:c5:96:2c:fd:1c:0e:ed:81:86:58:a5:
41:dd:b2:ab:c3:f0:0c:97:e9:44:ae:ad:d9:b8:96:89:34:18:
d7:82:14:15:64:d4:35:1e:83:be:36:4b:70:5e:46:a5:f8:27:
13:51:41:20:e4:ef:88:aa:77:d2:50:2b:bc:c7:42:94:dd:a8:
79:33:97:a1:e4:a3:fe:81:27:08:83:d5:ea:99:ff:87:48:c0:
5b:d6:ab:28:8f:d3:fe:ba:bc:cf:5c:f2:fc:7d:1d:84:08:5e:
ec:d2:8e:fb:b3:ad:5f:38:ce:a9:0d:63:45:5a:a8:be:d7:db:
83:a8:87:e4:ac:18:bf:6c:e7:27:d6:13:dd:6c:2f:3b:65:3b:
4b:88:4f:d9:23:47:66:c8:29:bb:e1:36:3b:fc:0d:f2:46:c7:
fe:22:0e:dd:15:1c:4b:aa:87:16:8e:70:4c:02:8a:9b:f9:33:
92:e2:be:25
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
81:8c:97:f7:da:61:f8:cf
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=ca.home.lan/emailAddress=root@localhost
Validity
Not Before: Nov 22 19:31:18 2016 GMT
Not After : Nov 20 19:31:18 2026 GMT
Subject: C=DE, ST=Bayern, L=Brennberg, O=Privat, OU=IT, CN=raspberrypi.home.lan/emailAddress=root@localhost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:d8:e1:e9:10:25:9d:aa:af:7f:f4:c7:95:3e:c0:
4c:3f:f1:23:fd:81:4c:30:d4:1f:04:bb:c5:76:a7:
64:66:81:f9:cd:21:56:db:07:d0:87:22:74:76:2d:
1c:c7:8a:6d:47:83:fc:8d:c2:15:e4:02:f9:82:3b:
29:91:2e:cd:53:a2:7d:a2:18:fb:d3:d1:7a:47:ef:
96:f6:5a:6f:18:d2:af:51:66:7f:78:fa:85:63:56:
f6:56:b6:5c:91:25:41:39:e6:97:c3:89:2f:c3:8f:
87:7f:84:cd:67:5d:4d:fb:64:42:99:0d:2d:8c:00:
0d:35:25:4c:60:59:1e:6c:db
Exponent: 65537 (0x10001)
Signature Algorithm: sha1WithRSAEncryption
9a:0d:6a:c7:4b:c8:78:ab:c7:7b:3d:54:93:36:c0:2a:69:47:
d3:88:d2:ff:b3:7d:4a:69:39:3d:d4:d8:20:8f:10:4d:21:2a:
ba:bd:b1:8d:78:a7:30:16:34:68:71:65:4e:01:f0:49:c4:00:
74:01:0f:a8:26:88:d7:d6:5c:03:a1:38:e3:6c:c2:79:67:64:
ad:e3:ab:6d:13:f9:37:c5:96:2c:fd:1c:0e:ed:81:86:58:a5:
41:dd:b2:ab:c3:f0:0c:97:e9:44:ae:ad:d9:b8:96:89:34:18:
d7:82:14:15:64:d4:35:1e:83:be:36:4b:70:5e:46:a5:f8:27:
13:51:41:20:e4:ef:88:aa:77:d2:50:2b:bc:c7:42:94:dd:a8:
79:33:97:a1:e4:a3:fe:81:27:08:83:d5:ea:99:ff:87:48:c0:
5b:d6:ab:28:8f:d3:fe:ba:bc:cf:5c:f2:fc:7d:1d:84:08:5e:
ec:d2:8e:fb:b3:ad:5f:38:ce:a9:0d:63:45:5a:a8:be:d7:db:
83:a8:87:e4:ac:18:bf:6c:e7:27:d6:13:dd:6c:2f:3b:65:3b:
4b:88:4f:d9:23:47:66:c8:29:bb:e1:36:3b:fc:0d:f2:46:c7:
fe:22:0e:dd:15:1c:4b:aa:87:16:8e:70:4c:02:8a:9b:f9:33:
92:e2:be:25
Wenn Sie den soeben erstellen Server-Schlüssel einsetzen, werden Sie bei jedem (Neu-)Start des Webservers zur Eingabe des zugehörigen Passwortes aufgefordert. Dies ist eine Sicherheitsfunktion welche Sie aber wie folgt umgehen können. Dadurch ist es dann wieder möglich, dass der Webserver wieder automatisch gestartet wird.
Erstellen Sie zuerst eine Kopie des Server-Schlüssels.
pi@raspberrypi ~ $ sudo cp /etc/ssl/apache2/certs/server.key /etc/ssl/apache2/certs/server.key.org
Anschließend rufen Sie den folgenden Befehl auf und geben das Passwort für Ihren Server-Schlüssel ein.
pi@raspberrypi ~ $ sudo openssl rsa -in /etc/ssl/apache2/certs/server.key.org -out /etc/ssl/apache2/certs/server.key
Enter pass phrase for /etc/ssl/apache2/certs/server.key.org:StrengGeheim
writing RSA key
Enter pass phrase for /etc/ssl/apache2/certs/server.key.org:StrengGeheim
writing RSA key
Aus Sicherheitsgründen sollten Sie jetzt die Rechte der erzeugten Dateien ändern, damit andere Benutzer diese nicht lesen beziehungsweise kopieren können.
pi@raspberrypi ~ $ sudo chmod 0600 /etc/ssl/apache2/certs/*
Apache2 konfigurieren
Da Sie jetzt alle benötigten Schlüssel und Zertifikate erstellt haben, kommen wir nun zur Apache2-Konfiguration. Zuerst erstellen Sie ein Verzeichnis in welches anschließend die von Apache2 benötigten Schlüssel und Zertifikate kopiert werden.
pi@raspberrypi ~ $ sudo mkdir -p /etc/apache2/ssl
pi@raspberrypi ~ $ sudo cp /etc/ssl/apache2/certs/ca.crt /etc/ssl/apache2/certs/server.crt /etc/ssl/apache2/certs/server.key /etc/apache2/ssl/
pi@raspberrypi ~ $ sudo cp /etc/ssl/apache2/certs/ca.crt /etc/ssl/apache2/certs/server.crt /etc/ssl/apache2/certs/server.key /etc/apache2/ssl/
Öffnen Sie anschließend die Konfigurationsdatei /etc/apache2/sites-available/default-ssl.conf mit einem Editor.
pi@raspberrypi ~ $ sudo vi /etc/apache2/sites-available/default-ssl.conf
Suchen Sie nach der Option SSLCertificateFile und geben hier das Server Zertifikat an.
SSLCertificateFile /etc/apache2/ssl/server.crt
Mit der Option SSLCertificateKeyFile müssen Sie den privaten Server Schlüssel angeben.
SSLCertificateKeyFile /etc/apache2/ssl/server.key
Ihr Certificate Authority Zertifikat müssen Sie bei der Option SSLCertificateChainFile angeben.
SSLCertificateChainFile /etc/apache2/ssl/ca.crt
Auch bei der Option SSLCACertificateFile wird das Certificate Authority Zertifikat eingetragen.
SSLCACertificateFile /etc/apache2/ssl/ca.crt
Nachdem Sie diese Änderungen vorgenommen und abgespeichert haben, aktivieren Sie mit dem folgenden Befehl die VHost-Konfiguration default-ssl.conf.
pi@raspberrypi ~ $ sudo a2ensite default-ssl.conf
Enabling site default-ssl.conf.
To activate the new configuration, you need to run:
service apache2 reload
Enabling site default-ssl.conf.
To activate the new configuration, you need to run:
service apache2 reload
Das SSL-Modul für den Apache2-Webserver müssen Sie noch mit dem folgenden Befehl aktivieren.
pi@raspberrypi ~ $ sudo a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
service apache2 restart
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
service apache2 restart
Nachdem Sie die SSL-Unterstützung konfiguriert haben, müssen Sie den Apache2-Daemon neu starten.
Hinweis: Sollten Sie das Passwort des Server-Schlüssels nicht entfernt haben, müssen Sie dieses eingeben bevor der Webserver gestartet wird.
pi@raspberrypi ~ $ sudo /etc/init.d/apache2 restart
Zur Kontrolle ob der Webserver auch auf dem TCP-Port 443 lauscht und so den Zugriff über HTTPS erlaubt, können Sie den folgenden Befehl aufrufen. In der Ausgabe sollten Sie einen entsprechenden Eintrag für den TCP-Port 443 vorfinden.
pi@raspberrypi ~ $ sudo netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 109 38035 10595/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 8660 545/sshd
tcp6 0 0 :::443 :::* LISTEN 0 52361 13005/apache2
tcp6 0 0 :::80 :::* LISTEN 0 52357 13005/apache2
tcp6 0 0 :::22 :::* LISTEN 0 8670 545/sshd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 105 8142 337/avahi-daemon: r
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 8295 544/dhcpcd
udp 0 0 192.168.10.82:123 0.0.0.0:* 0 8718 565/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 0 8717 565/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 0 8709 565/ntpd
udp 0 0 0.0.0.0:42129 0.0.0.0:* 105 8144 337/avahi-daemon: r
udp6 0 0 :::5353 :::* 105 8143 337/avahi-daemon: r
udp6 0 0 :::54593 :::* 105 8145 337/avahi-daemon: r
udp6 0 0 fe80::3b8d:3c33:dbe:123 :::* 0 8720 565/ntpd
udp6 0 0 ::1:123 :::* 0 8719 565/ntpd
udp6 0 0 :::123 :::* 0 8710 565/ntpd
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 109 38035 10595/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 8660 545/sshd
tcp6 0 0 :::443 :::* LISTEN 0 52361 13005/apache2
tcp6 0 0 :::80 :::* LISTEN 0 52357 13005/apache2
tcp6 0 0 :::22 :::* LISTEN 0 8670 545/sshd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 105 8142 337/avahi-daemon: r
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 8295 544/dhcpcd
udp 0 0 192.168.10.82:123 0.0.0.0:* 0 8718 565/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 0 8717 565/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 0 8709 565/ntpd
udp 0 0 0.0.0.0:42129 0.0.0.0:* 105 8144 337/avahi-daemon: r
udp6 0 0 :::5353 :::* 105 8143 337/avahi-daemon: r
udp6 0 0 :::54593 :::* 105 8145 337/avahi-daemon: r
udp6 0 0 fe80::3b8d:3c33:dbe:123 :::* 0 8720 565/ntpd
udp6 0 0 ::1:123 :::* 0 8719 565/ntpd
udp6 0 0 :::123 :::* 0 8710 565/ntpd
Weiterführende Tutorials
Raspbian Jessie: HTTPS mit Client-Zertifikaten
Raspbian Jessie: Zugriff auf den Apache2-Webserver nur über HTTPS erlauben
Dieser Eintrag wurde am 23.11.2016 erstellt.
Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2861.html
[ Zur Startseite ] [ Zur Kategorie ]
© 2004-2021 by Georg Kainzbauer