Good to Know Database

Raspbian Wheezy: HTTPS mit Client-Zertifikaten


Das folgende Tutorial baut auf dem Tutorial Raspbian Wheezy: HTTPS mit Apache2 und OpenSSL auf und zeigt Ihnen wie Sie einen HTTPS-Server zusätzlich mit Client-Zertifikaten absichern können.

Client-Zertifikate erstellen

Zuerst erstellen Sie einen privaten RSA-Schlüssel für den Benutzer.

pi@raspberrypi ~ $ sudo openssl genrsa -des3 -out /etc/ssl/apache2/certs/kainzbauerge.key 1024
Generating RSA private key, 1024 bit long modulus
............++++++
.......................++++++
e is 65537 (0x10001)
Enter pass phrase for /etc/ssl/apache2/certs/kainzbauerge.key:StrengGeheim
Verifying - Enter pass phrase for /etc/ssl/apache2/certs/kainzbauerge.key:StrengGeheim

Anschließend wird ein Certificate Signing Request (CSR) erzeugt.

pi@raspberrypi ~ $ sudo openssl req -new -key /etc/ssl/apache2/certs/kainzbauerge.key -out /etc/ssl/apache2/certs/kainzbauerge.csr
Enter pass phrase for /etc/ssl/apache2/certs/kainzbauerge.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) []:Woerth an der Donau
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:Georg Kainzbauer
Email Address []:georg@home.lan

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:StrengGeheim
An optional company name []:StrengGeheim

Der nächste Befehl generiert das Zertifikat.

pi@raspberrypi ~ $ sudo openssl x509 -req -in /etc/ssl/apache2/certs/kainzbauerge.csr -out /etc/ssl/apache2/certs/kainzbauerge.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=Woerth an der Donau/O=Privat/OU=IT/CN=Georg Kainzbauer/emailAddress=georg@home.lan
Getting CA Private Key
Enter pass phrase for /etc/ssl/apache2/certs/ca.key:StrengGeheim

Jetzt müssen Sie noch eine PKCS#12 (Public Key Cryptography Standards #12) Datei erstellen in welcher der private Schlüssel und das zugehörige Zertifikat passwortgeschützt gespeichert wird.

Hinweis: Das Export Password benötigen Sie später beim Importieren des Zertifikats wieder.

pi@raspberrypi ~ $ sudo openssl pkcs12 -export -in /etc/ssl/apache2/certs/kainzbauerge.crt -inkey /etc/ssl/apache2/certs/kainzbauerge.key -name "Georg Kainzbauer" -out /etc/ssl/apache2/certs/kainzbauerge.p12
Enter pass phrase for /etc/ssl/apache2/certs/kainzbauerge.key:StrengGeheim
Enter Export Password:StrengGeheim
Verifying - Enter Export Password:StrengGeheim

Die Details der PKCS#12 Datei können Sie sich mit dem folgenden Befehl ansehen.

pi@raspberrypi ~ $ openssl pkcs12 -in /etc/ssl/apache2/certs/kainzbauerge.p12 -clcerts -nokeys -info
Enter Import Password:StrengGeheim
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
    localKeyID: D8 FF DB 91 8E 88 74 4A BC 45 A1 A8 0C A6 51 DD 35 79 B1 86
    friendlyName: Georg Kainzbauer
subject=/C=DE/ST=Bayern/L=Woerth an der Donau/O=Privat/OU=IT/CN=Georg Kainzbauer/emailAddress=georg@home.lan
issuer=/C=DE/ST=Bayern/L=Woerth an der Donau/O=Privat/OU=IT/CN=ca.home.lan/emailAddress=root@localhost
-----BEGIN CERTIFICATE-----
MIIDHTCCAgUCCQDVo1f0LBoXPzANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMC
REUxDzANBgNVBAgMBkJheWVybjEcMBoGA1UEBwwTV29lcnRoIGFuIGRlciBEb25h
dTEPMA0GA1UECgwGUHJpdmF0MQswCQYDVQQLDAJJVDEUMBIGA1UEAwwLY2EuaG9t
ZS5sYW4xHTAbBgkqhkiG9w0BCQEWDnJvb3RAbG9jYWxob3N0MB4XDTEzMDkyOTEz
MDkzOVoXDTIzMDkyNzEzMDkzOVowgZQxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZC
YXllcm4xHDAaBgNVBAcME1dvZXJ0aCBhbiBkZXIgRG9uYXUxDzANBgNVBAoMBlBy
aXZhdDELMAkGA1UECwwCSVQxGTAXBgNVBAMMEEdlb3JnIEthaW56YmF1ZXIxHTAb
BgkqhkiG9w0BCQEWDmdlb3JnQGhvbWUubGFuMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQCmekpHt2gmm3za2I2c6PUfoDL1ako4hOzXONVIw9zRueTMP49QdCcK
09JV/x2JDEtxLm+iBEdqrgvQoAu5sqW+YnjwWFHuKUGqXh/7CdLwRz3KX5K64he8
aKpSTHc4idf8bAtWNcxCOACc2YZa1zPQKtwoANbknr8cDQWkNXOc4QIDAQABMA0G
CSqGSIb3DQEBBQUAA4IBAQBRGMP7CkZ0gNIFIPnrcsnVFXfEcONJkUWy26Fndzwf
ePevy6I9IOVe/a1o8anvQe9td2w/J5xdGgFA2gylxLA974oeOfUP4+PHR9RtuxhA
etOJmUnvjH3M4zAvQtjeL77rv2JA5QBkVmM8Bmy9x0tmJq+c7ivJqSN+K1nL6sOR
GMYPeKzcBBa43Mi5kzY7F5eAXX3iI4i7Q4lA+8P9YY42cg1+B30RzlMgGjsGjq/P
NNWTXnNNpekYU2HYV1jrptieoB7/YK+VLod7EAT07NAZ34F7iTJ/uu4Bj3u0okcn
a+WzIPfm5AwlIZLAxv4v8/14FX0AlWRfGh6p82iTH4kD
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048

Aus Sicherheitsgründen sollten Sie jetzt wieder die Rechte der erzeugten Dateien ändern.

pi@raspberrypi ~ $ sudo chmod 0600 /etc/ssl/apache2/certs/*

Apache2 konfigurieren

Öffnen Sie die Konfigurationsdatei /etc/apache2/sites-available/default-ssl mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/apache2/sites-available/default-ssl

Suchen Sie hier nach dem folgenden Abschnitt.

        #   Client Authentication (Type):
        #   Client certificate verification type and depth.  Types are
        #   none, optional, require and optional_no_ca.  Depth is a
        #   number which specifies how deeply to verify the certificate
        #   issuer chain before deciding the certificate is not valid.
        #SSLVerifyClient require
        #SSLVerifyDepth  10

Ändern Sie die Optionen SSLVerifyClient und SSLVerifyDepth wie folgt ab.

        SSLVerifyClient require
        SSLVerifyDepth  1

Nachdem Sie die Änderungen gespeichert haben, müssen Sie den Webserver neu starten.

pi@raspberrypi ~ $ sudo /etc/init.d/apache2 restart

Client-Zertifikate importieren

Bevor Sie wieder auf Ihren HTTPS-Webserver zugreifen können, müssen Sie das Client-Zertifikat im Browser importieren. Dazu müssen Sie zuerst die Datei /etc/ssl/apache2/certs/kainzbauerge.p12 auf einem sicheren Weg (z.B. SCP, verschlüsselte E-Mail, USB-Stick, ...) auf Ihren Client kopieren.

Ich möchte Ihnen hier nur kurz die Schritte zeigen, wie Sie das Client-Zertifikat im Firefox 24 importieren.

Firefox 24

Nachdem Sie Firefox gestartet haben, öffnen Sie das Menü Extras und wählen Einstellungen aus. Öffnen Sie jetzt das Register Erweitert und anschließend das Register Zertifikate. Klicken Sie nun auf Zertifikate anzeigen. Im Register Ihre Zertifikate klicken Sie auf Importieren... und öffnen die Datei kainzbauerge.p12. Geben Sie das Passwort ein und schließen danach alle Fenster mit OK. Zum Abschluss rufen Sie eine Webseite auf Ihrem HTTPS-Webserver auf und akzeptieren das Server-Zertifikat.


Dieser Eintrag wurde am 01.10.2013 erstellt und zuletzt am 25.09.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2351.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer