Good to Know Database

CentOS 6: HTTPS mit Client-Zertifikaten


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

Client-Zertifikate erstellen

Wechseln Sie wieder in das Verzeichnis /etc/ssl/certs/httpd, in welchem sich die bereits erzeugten Zertifikate und Schlüssel befinden.

[root@centos6 ~]# cd /etc/ssl/certs/httpd

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

[root@centos6 httpd]# openssl genrsa -des3 -out kainzbauerge.key 1024
Generating RSA private key, 1024 bit long modulus
.......................................++++++
....++++++
e is 65537 (0x10001)
Enter pass phrase for kainzbauerge.key:
Verifying - Enter pass phrase for kainzbauerge.key:

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

[root@centos6 httpd]# openssl req -new -key kainzbauerge.key -out kainzbauerge.csr
Enter pass phrase for kainzbauerge.key:
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) [XX]:DE
State or Province Name (full name) []:Bayern
Locality Name (eg, city) [Default City]:Woerth an der Donau
Organization Name (eg, company) [Default Company Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:Georg Kainzbauer
Email Address []:georg@home.lan

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

Der nächste Befehl generiert das Zertifikat.

[root@centos6 httpd]# openssl x509 -req -in kainzbauerge.csr -out kainzbauerge.crt -sha1 -CA ca.crt -CAkey 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 ca.key:

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.

[root@centos6 httpd]# openssl pkcs12 -export -in kainzbauerge.crt -inkey kainzbauerge.key -name "Georg Kainzbauer" -out kainzbauerge.p12
Enter pass phrase for kainzbauerge.key:
Enter Export Password:
Verifying - Enter Export Password:

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

[root@centos6 httpd]# openssl pkcs12 -in kainzbauerge.p12 -clcerts -nokeys -info
Enter Import Password:
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
    localKeyID: 7F C9 C9 64 95 0A 64 8A D4 A1 F8 8E C0 E4 86 4D F7 F2 F1 02
    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-----
MIIDHTCCAgUCCQC2gnHyONP1dDANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMC
REUxDzANBgNVBAgMBkJheWVybjEcMBoGA1UEBwwTV29lcnRoIGFuIGRlciBEb25h
dTEPMA0GA1UECgwGUHJpdmF0MQswCQYDVQQLDAJJVDEUMBIGA1UEAwwLY2EuaG9t
ZS5sYW4xHTAbBgkqhkiG9w0BCQEWDnJvb3RAbG9jYWxob3N0MB4XDTExMTAyNjEx
MjQ0NVoXDTIxMTAyMzExMjQ0NVowgZQxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZC
YXllcm4xHDAaBgNVBAcME1dvZXJ0aCBhbiBkZXIgRG9uYXUxDzANBgNVBAoMBlBy
aXZhdDELMAkGA1UECwwCSVQxGTAXBgNVBAMMEEdlb3JnIEthaW56YmF1ZXIxHTAb
BgkqhkiG9w0BCQEWDmdlb3JnQGhvbWUubGFuMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQC12rxfhWpwOLR/WcOD73UMYoBLAOOzyWlfjKZhYMwLN2ZjWGZLFvoF
NSrMeQWn95hNesKvOUOHfZdqHUssSXXEcaFMhc7Rmu0bP0D28SvtUCx5yaWtl0z9
VcxopnSW4QqM4ki8Qe6+X+1vpuIgArLJTtlA2mj2hQ0VHK1l8o+olwIDAQABMA0G
CSqGSIb3DQEBBQUAA4IBAQAxBzq2i9I+3xU5PzXuS57gSGMNfg5Y71wRjc3bfnS8
l54XrgRqlMT9RuoXWyQRJKyvWzOVj3XJcXL5UdwklnODcdJsdKD1ZLMJ8kE1Beup
TiZj34bOV6TImqDIX2ci3FccO6xqEWd4/SI8gih1aPd33P7JNW0yVuwPHgDjPMjF
SWlkcf3cWvQJolebSFSE6K5UpdiApMhJEzOkwpDLo6clf6sSi2byj1jiS6rErKHY
W1AF0ad03Kmjh01oNUlQ95Fy4++dKGmlS7Yxa8SF/Cvlth6QgPEKtZwOjgfH0NjO
p6wbRPyeCyYNeGXSHwHD2n9NvMTJtqugFX8sTS/Bf5gy
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048

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

[root@centos6 httpd]# chmod -R 0600 /etc/ssl/certs/httpd

Apache 2 konfigurieren

Öffnen Sie die Konfigurationsdatei des SSL-Moduls um zwei Option zu ergänzen.

[root@centos6 httpd]# vi /etc/httpd/conf.d/ssl.conf

Suchen Sie nach dem folgenden Abschnitt und erweitern Sie ihn.

#   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
SSLVerifyClient require
SSLVerifyDepth  1

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

[root@centos6 httpd]# service httpd 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/certs/httpd/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 7 importieren.

Firefox 7

Nachdem Sie Firefox 7 gestartet haben, öffnen Sie das Menü Extras und wählen Einstellungen aus. Öffnen Sie jetzt das Register Erweitert und anschließend das Register Verschlüsselung. 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 26.10.2011 erstellt und zuletzt am 24.01.2016 bearbeitet.

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

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer