Client Zertifikate für Apache Anwender
Es gibt in einigen Firmen Vorgaben bestimmte WEB-Anwendungen in öffentlichen Raum besonders zu schützen. Die Internetadresse sollte von dem Mitarbeiter eine Firma von intern als auch von extern erreichbar sein.
Wegen der Wichtigkeit der Daten reicht es nicht aus, dass die WEB-Seite nur mit Login Daten, Benutzernamen und Passwort geschützt wird. In so einem Fall werden Client Zertifikate für die WEB-Anwendung gebraucht. Nur die Anwender, die einen Client-Zertifikat auf dem Geräte haben, können die Seite von diesem Gerät aufrufen und sich dann anmelden.
Die Vorgehensweise der Konfiguration ist für den internen als auch externen gebracht gleich. Die Domain bzw. Subdomain muss in DNS eingetragen sein.
Es wird davon ausgegangen, dass wir die Domain: mydomain1.firma.lan mit einem Client-Zertifikat schützen möchten. Außerdem wollen wir einen Server in der DMZ der Firma nutzen. Aus diesem Grund brauchen wir nicht unbedingt ein Zertifikat, der von einer Zertifizierungsstelle bestätigt wird. Wir können auch selbst ein Zertifikat erstellen und selbst bestätigen.
Die Web-Seite https://mydomain1.firma.lan kann man in Browser aufrufen und das Zertifikat ist gültig.
Das CA-Zertifikat haben wir vorher auf unserem Gerät importiert.
-
- die CA- und Serverzertifikate befinden sich im Ordner /etc/apache2/cert
- Ordner der Zertifikats-Store auf dem Debian Server ist der Ordner /etc/ssl/certs
- der CA Zertifikat wurde schon auf den Clients importiert.
- Die Web-Seite https://mydomain1.firma.lan kann man auf dem Client aufrufen
und das Zertifikat ist gültig - die VirtualHost-Datei für die Domain mydomain1.firma.lan sieht folgendermaßen aus
<VirtualHost *:443>
ServerAdmin webmaster@mydomain1.firma.lan
DocumentRoot /var/www/html/mydomain1
ServerName mydomain1
ServerAlias mydomain1.firma.lan
SSLEngine on
SSLCertificateFile /etc/apache2/cert/mydomain1.firma.lan.crt
SSLCertificateKeyFile /etc/apache2/cert/mydomain1.firma.lan.key
ErrorLog /var/log/apache2/mydomain1.firma.lan_error_log
CustomLog /var/log/apache2/mydomain1.firma.lan_access_log common
</VirtualHost>
dir = ../demoCA
# ... wird dieser Ordner definiert.
dir = /etc/apache2/cert/myClientCert
Hier müssen wir die gleichen Daten eintragen wie bei der CSR-Zertifikatsanforderung für den Server. Der Unterschied ist nur bei "Organizational Unit Name", hier tragen wir den Namen des Clients ein.
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:Stein
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MBS-IT
Organizational Unit Name (eg, section) []:client1
Common Name (e.g. server FQDN or YOUR name) []:mydomain1.firma.lan
Email Address []:admin@mydomain1.firma.lan
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Anpassung der Apache Konfiguration
SSLVerifyClient require
SSLVerifyDepth 5
Letztendlich unsere Konfigurationsdatei für die Domain mydomain1.firma.lan würde so aussehen.
<VirtualHost *:443>
ServerAdmin webmaster@mydomain1.firma.lan
DocumentRoot /var/www/html/mydomain1
ServerName mydomain1
ServerAlias mydomain1.firma.lan
SSLEngine on
SSLCertificateFile /etc/apache2/cert/mydomain1.firma.lan.crt
SSLCertificateKeyFile /etc/apache2/cert/mydomain1.firma.lan.key
SSLCACertificatePath "/etc/ssl/certs"
SSLVerifyClient require
SSLVerifyDepth 5
ErrorLog /var/log/apache2/mydomain1.firma.lan_error_log
CustomLog /var/log/apache2/mydomain1.firma.lan_access_log common
</VirtualHost>
Den Apache-Dienst muss man neu starten.
Als Administrator starten wir "Computerzertifikate verwalten" und importieren das Client-Zertifikat in "Eigene Zertifikate". Selbstverständlich der Benutzer kann auch selbst das Zertifikat in "Benutzerzertifikate verwalten" in "Eigene Zertifikate" importieren.