Apache - Erstellen und Überprüfen von Client-Zertifikaten

Erstellen von Client-Zertifikaten

  1. Erstellen des Client-Schlüssels: # openssl genrsa -des3 -out garex.key 1024
  2. Erstellen der Client-Anfrage: # openssl req -new -key garex.KEY -out garex.CSR Beim Common Name (CN) gebe deinen eigenen Namen ein, z.B. "Jan Janssen". Für die Organisationseinheit kannst Du eine Abteilung eingeben.
  3. Signiere die Client-Zertifikat Anfrage und generiere das Zertifikat: # openssl ca -in garex.CSR -cert ../../CA/garexCA.CRT -keyfile \ ../../CA/garexCA.KEY -out garex.CRT
  4. Überprüfe alle Daten: # openssl x509 -in garex.CRT -text

Validieren des Client-Zertifikates

Wie authentifizieren ich meine Kunden auf Basis von Zertifikaten, wenn ich alle meine Kunden kenne? Wenn Du deine Kunden kennst (geschlossene Benutzergruppe ), wie z.B. im Intranet, kannst Du die Plain-Zertifikat-Authentifizierung verwenden. Das einzige was Du tun musst ist ein Client-Zertifikat zu signieren mit deinem eignen CA-Zertifikat ca.crt und dann den Client mit dem Zertifikat überprüfen.

httpd.conf:

# een client certificaat vereist dat direct ondertekent
# moet zijn met uw CA certificaat in ca.crt
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl.crt/ca.crt

Wie kann ich meine Kunden für eine bestimmte URL authentifiziere basierend auf Zertifikaten, aber den anonymen Kunden den Rest des Servers zur Zugänglich machen? Um dies zu erreichen, verwende die per Verzeichnis Umkonfigurationsfunktion http://httpd.apache.org/docs/2.0/mod/mod_ssl.html

httpd.conf:

SSLVerifyClient none
SSLCACertificateFile conf/ssl.crt/ca.crt

<Location /secure/area>
SSLVerifyClient require
SSLVerifyDepth 1

SSLCheck

SSLCheck überprüft, ob Ihr Zertifikat ordnungsgemäß auf Ihrem Server installiert ist und ob es potenzielle Probleme gibt.