PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache und Client Zertifikate



Windoofsklicker
08.11.06, 10:35
Hi Folks,

ich versuche, meinen Apachen dazu zu bewegen, Clients per Zertifikat zu authentifizieren. Es ist ein Apache 2.0.53 unter FC3.

Die /etc/conf.d/ssl.conf habe ich wie folgt modifiziert:


SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
SSLCACertificatePath /etc/httpd/conf/ssl.crt/
<Location /webmail>
SSLVerifyClient require
SSLVerifyDepth 1
</Location>


Meine CA läuft bereits etwas länger, da ich auch die Zertifikate für den Apachen im "normalen SSL betrieb" selbst generiert habe.
In der Section [ usr_cert ] habe ich nsCertType = client, email, objsign eingetragen.

Dann habe ich Zertifikate (mit und ohne Passphrase) für den Client erstellt und diese im Firefox importiert.



#! /bin/sh
# $1 dateiname
# $2 schluessellaenge
# $3 Dauer
# $4 Name

# Mit Passphrase
#openssl genrsa -des3 -out $1.key $2

# Ohne Passphrase
openssl genrsa -out $1.key $2

openssl req -new -key $1.key -out $1.csr
openssl ca -in $1.csr -out $1.crt -days $3
openssl pkcs12 -export -in $1.crt -out $1.crt.p12 -inkey $1.key -name $4



Der Apache startet ohne Fehlermeldungen. Beim Versuch den Bereich /webmail zu öffnen, zeigt der Firefox nichts, der IE eine Fehlermeldung. Im Apache-Log steht dann:



[Wed Nov 08 10:58:10 2006] [error] Certificate Verification: Error (20): unable to get local issuer certificate
[Wed Nov 08 10:58:10 2006] [error] Re-negotiation handshake failed: Not accepted by client!?


Meine Fragen: Kann es daran liegen, dass ich noch keine Revocation List erstellt habe?
Wie kann ich überprüfen, ob er das Client Zertifikat überhaupt gegen das Root Zertifikat meiner CA checkt?
Es liegt auf jeden Fall im Angegebenen Verzeichnis und sollte auch das entsprechende Format haben. Btw: Wie kann ich das Format überprüfen?

Windoofsklicker
09.11.06, 07:14
/* Push */

marce
21.02.07, 11:54
gerade gefunden bei der Suche nach was anderem:

http://www.linuxforen.de/forums/showpost.php?p=1418849&postcount=4

evtl. hülft es... :-)

Windoofsklicker
21.02.07, 12:46
Nope.. leider nicht.

temir
21.02.07, 16:04
Aus der TLS-Docu:


Gegenseitige Identifikationsüberprüfung (Authentifizierung)
Ein Austausch von Zertifikaten mit öffentlichem Schlüssel für die
gegenseitige Identifikation. Die Identität des Clients und des Servers wird
jeweils mit öffentlichem Schlüssel in Zertifikaten verschlüsselt, die folgende
Komponenten enthalten:

* Den registrierten Namen des Subjekts
* Den registrierten Namen des Ausstellers
* Den öffentlichen Schlüssel des Subjekts
* Die Unterschrift des Ausstellers
* Den Gültigkeitszeitraum
* Die Seriennummer

Grundprinzip ganz grob umrissen: für den jeweiligen User wird ein Cert generiert,
mit der (auf dem Server liegenden) CA signiert. Außerdem muss noch die Zuordnung User <-> Cert stattfinden.
Danach export des Certs, damit der Remoterechner (oder eben Browser) sich gegenüber Server authentifizieren kann.

Bei dir scheint der Apache die CA nicht kennen, mit der dein Client-Cert signiert wurde, -
gib sie ihm mit;ob nur Pub-Teil oder gar ganz - musst selber entscheiden.
Eine andere Möglichkeit wärs, dem System-openssl deine CA als 'Trusted' bekannt zu machen.

LKH
21.02.07, 16:17
Hi,

kennen die Clients überhaupt das Root CA? Das heißt ist das installiert und wird dem vertraut?

Mit der Revocation List hat das IMHO nichts zu tun.

Windoofsklicker
21.02.07, 20:52
Die gleiche CA stellt auch das Zertifikat für den Apachen aus. D.h., der Apache hat auch das Root-Zertifikat. Die Clients haben das Root-CA auch vorliegen und als trusted eingestuft.

temir
21.02.07, 20:58
/etc/apache2/vhosts.d/vhost-ssl.template (suse)


# Certificate Authority (CA):
# Set the CA certificate verification path where to find CA
# certificates for client authentication or alternatively one
# huge file containing all of them (file must be PEM encoded)
# Note: Inside SSLCACertificatePath you need hash symlinks
# to point to the certificate files. Use the provided
# Makefile to update the hash symlinks after changes.
#SSLCACertificatePath /etc/apache2/ssl.crt
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt

Schon mit der 2-en Zeile versucht (SSLCACertificateFile)?

Windoofsklicker
22.02.07, 07:15
Nein, bis jetzt nur mit der Ersten.