Debian Apache SSL Client Auth: Unterschied zwischen den Versionen
Erich (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „==Allgemein== Apache bietet die Möglichkeit, Clients anhand eines SSL-Zertifikates eindeutig zu identifizieren. Zu diesem Zweck ist ein signiertes Zertifikat erf…“) |
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 5: | Zeile 5: | ||
* OpenSSL mit Root_CA | * OpenSSL mit Root_CA | ||
* Apache Webserver mit SSL | * Apache Webserver mit SSL | ||
==Apache-Konfiguration== | |||
Die Seite, die unter /var/www/protected/ abgelegt ist, soll nur von Clients erreichbar sein, die ein korrektes SSL Client-Zertifikat besitzen. | |||
===Apache2.2=== | |||
vi /etc/apache2/sites-enabled/protected_https.conf | |||
Folgende Zeilen einfügen und anpassen: | |||
<VirtualHost *:443> | |||
DocumentRoot /var/www/protected | |||
ServerName protected.schiele.homelinux.org | |||
<Directory /var/www/protected/> | |||
Options +FollowSymLinks | |||
AllowOverride All | |||
order allow,deny | |||
allow from all | |||
Require ssl-verify-client | |||
SSLVerifyClient require | |||
SSLVerifyDepth 1 | |||
</Directory> | |||
SSLCACertificateFile /etc/ssl/CA/cacert.pem | |||
SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem | |||
SSLEngine on | |||
</VirtualHost> | |||
===Apache2.4=== | |||
vi /etc/apache2/sites-enabled/protected_https.conf | |||
Folgende Zeilen einfügen und anpassen: | |||
<VirtualHost *:443> | |||
DocumentRoot /var/www/protected | |||
ServerName protected.schiele.homelinux.org | |||
<Directory /var/www/protected/> | |||
Options +FollowSymLinks | |||
AllowOverride All | |||
Require ssl-verify-client | |||
SSLVerifyClient require | |||
SSLVerifyDepth 1 | |||
</Directory> | |||
SSLCACertificateFile /etc/ssl/CA/cacert.pem | |||
SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem | |||
SSLEngine on | |||
</VirtualHost> | |||
===Apache neustart=== | |||
Apache muss nach Konfigänderung neu gestartet werden: | |||
/etc/init.d/apache2 restart | |||
Aktuelle Version vom 15. Mai 2015, 12:10 Uhr
Allgemein
Apache bietet die Möglichkeit, Clients anhand eines SSL-Zertifikates eindeutig zu identifizieren. Zu diesem Zweck ist ein signiertes Zertifikat erforderlich, dessen Root_CA dem Apache-Server bekannt ist. Das Zertifikat wird im Browser importiert. Auf Anforderung des Servers überträgt der Webbrowser das Zertifikat zum Webserver, der das Zertifikat verifizieren kann. Nur wenn er es als gültiges Zertifikat erkennt, ist der User berechtigt, die geschützte Website zu besuchen. Es sollte ein Passwort für das Client Zertifikat vergeben werden, um die Sicherheit nochmals zu erhöhen. Ansonsten kann jeder, der im Besitz des Zertifikates gelangt, auf die Webseite zugreifen.
Voraussetzungen:
- OpenSSL mit Root_CA
- Apache Webserver mit SSL
Apache-Konfiguration
Die Seite, die unter /var/www/protected/ abgelegt ist, soll nur von Clients erreichbar sein, die ein korrektes SSL Client-Zertifikat besitzen.
Apache2.2
vi /etc/apache2/sites-enabled/protected_https.conf
Folgende Zeilen einfügen und anpassen:
<VirtualHost *:443> DocumentRoot /var/www/protected ServerName protected.schiele.homelinux.org <Directory /var/www/protected/> Options +FollowSymLinks AllowOverride All order allow,deny allow from all Require ssl-verify-client SSLVerifyClient require SSLVerifyDepth 1 </Directory> SSLCACertificateFile /etc/ssl/CA/cacert.pem SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem SSLEngine on </VirtualHost>
Apache2.4
vi /etc/apache2/sites-enabled/protected_https.conf
Folgende Zeilen einfügen und anpassen:
<VirtualHost *:443> DocumentRoot /var/www/protected ServerName protected.schiele.homelinux.org <Directory /var/www/protected/> Options +FollowSymLinks AllowOverride All Require ssl-verify-client SSLVerifyClient require SSLVerifyDepth 1 </Directory> SSLCACertificateFile /etc/ssl/CA/cacert.pem SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem SSLEngine on </VirtualHost>
Apache neustart
Apache muss nach Konfigänderung neu gestartet werden:
/etc/init.d/apache2 restart
Client Zertifiakt erstellen
Client Zertifikate werden analog derer von Server-Zertifikaten erzeugt. Als CN wird jedoch keine Server Adresse verwendet, sondern der Name des Clients. Das Zertifikat wird im PKCS12-Format anstatt PEM-Format gespeichert und im Browser des Client importiert.
cd /etc/openssl/CA openssl req -new -nodes -out client-req.pem -config ./openssl.conf
Hinweis: | |
Bei der Frage nach dem Common Name (CN) unbedingt den Namen und Vornamen des Client Users eingeben. |
Signieren des Zertifikates:
openssl ca -out cert.pem -config ./openssl.conf -infiles client-req.pem
Exportieren ins PKCS12-Format:
openssl pkcs12 -export -in cert.pem -inkey key.pem -name "Name Vorname Client Cert" -out client.p12
Es wird nach dem Export-Passwort gefragt, das der User beim Import in den Webbrowser eingeben muss. Dieses muss also dem Client-User mitgeteilt werden.
openssl pkcs12 -in client.p12 -clcerts -nokeys -info
Das Import-Passwort= Export-Passwort erneut eingeben.
Aufräumen:
mv key.pem key/client-Name.pem mv client-req.pem req/client-Name.pem mv cert.pem certs/client-Name.pem mv client.p12 certs/client-Name.p12
Einbinden des Client-Zertifikats in Webbrowser
Mozilla Firefox
- Einstellungsdialog öffnen
- Tab Erweitert
- Tab Verschlüsselung
- Button Zertifikate anzeigen
- Tab Ihre Zertifikate
- Button Importieren auswählen
- Das auf den Client übertragene Client-Zertifikat (client-Name.p12) auswählen und bestätigen.
- Das Export-Passwort eingeben.
- Eine Meludng erscheint, dass das Zertifikat erfolgreich importiert wurde.
- Der Dialog kann nun wieder verlassen werden.
Internet Explorer
- Menü Extras/Internetoptionen
- Reiter Inhalte
- Button Zertifikate anwählen
- Reiter Eigene Zertifikate
- Button Importieren anklicken
- Im Assisten Button Weiter anklicken
- Button Durchsuchen anklicken
- Dateifilter im Dateiauswhldialog einstellen, damit Files mit .p12 Endung angezeigt werden
- Cleint-Zertifikat auswählen
- Button Weiter anklicken
- Export-Passwort eingeben
- Evtl., falls gewünscht die Option Hohe Sicherheit ... auswählen, damit Internet Explorer bei jeder Verwendung dieses Cleint-Zertifikates das Export-Passwort anfrägt. Falls diese Option nicht angewählt wird, dann wird das Passwort nur beim Importieren abgefragt und dann dauerhaft gespeichert.
- Button Weiter anklicken
- Option Alle Zertifikate in folgendem Speicher speichern und als Zertifikatespeicher Eigene Zertifikate. Anschließen Button Weiter aktivieren.
- Assistent mit Button Fertigstellen verlassen.
- Der Einstellungsdialog kann nun wieder verlassen werden.