Tomcat-Client-Authentifizierung mit clientAuth = wollen

8

Meine Anwendung erfordert die Clientauthentifizierung für eine bestimmte URL. Nach erfolgreicher Clientauthentifizierung führt die Anwendung selbst eine Überprüfung des Clientzertifikats durch (mithilfe des Filters feature x509). Ich wollte Tomcat so konfigurieren, dass die Client-Authentifizierung (clientAuth = true) für die spezifische URL erzwungen wird, aber basierend auf diesem Post scheint es, dass ich dies nicht nur mit tomcat - Tomcat für die Client-Authentifizierung nur für bestimmte URL-Muster konfigurieren .

Meine Frage ist, wenn ich clientAuth = will, wird folgendes sein, wenn der Server ein Zertifikat anfordert:

  1. Wenn das Gerät ein Identitätszertifikat besitzt, aber nicht vertrauenswürdig für die in tomcat truststoreFile konfigurierte Zertifizierungsstelle, wird kein Zertifikat übergeben, und die Anforderung wird im Spring-Sicherheitsfilter fehlgeschlagen (Zertifikat ist null)
  2. Wenn das Gerät über ein Identitätszertifikat verfügt, das von der in tomcat truststoreFile konfigurierten Zertifizierungsstelle akzeptiert wird, aber ungültig ist (nicht sicher, welche Validierungen durchgeführt werden) oder abgelaufen ist, schlägt die Authentifizierung entweder in tomcat (vor dem Sicherheitsfilter) oder in Option 1 fehl Es wird kein Zertifikat übergeben und die Anforderung wird im Sicherheitsfilter für den Frühling fehlschlagen (Zertifikat wird null sein)

Gibt es eine Sicherheitslücke, die ich möglicherweise mit dieser Konfiguration von want + security filter vermisse? Ich denke, die Frage ist - wenn ein Zertifikat schließlich vom Gerät an den Server übergeben wird, wird der Server es immer validieren (nicht abgelaufen, vertrauenswürdig usw.), auch wenn clientAuth = will, und es dem Client nicht erlauben weiterzumachen, wenn das Zertifikat ist ungültig? Der Fall, in dem kein Zertifikat übergeben wird, wird vom Sicherheitsfilter abgedeckt, der überprüft, ob das Zertifikat nicht null ist.

Danke!

    
michalv82 19.02.2013, 16:12
quelle

1 Antwort

5

Ihre Annahmen in 1. und 2. sind richtig. Tomcat lässt keine nicht vertrauenswürdigen oder ungültigen Zertifikate für Ihre Anwendung zu. Wenn Sie ein Null-Zertifikat erhalten, können Sie davon ausgehen, dass entweder kein Zertifikat übergeben wurde oder ein nicht vertrauenswürdiges / ungültiges Zertifikat übergeben wurde.

An dem Projekt, an dem ich arbeite, haben wir die gleiche Anforderung wie Sie: Client-Zertifikate nur für bestimmte URLs. Wir haben durch Experimente herausgefunden, wie "clientAuth = will" funktioniert.

    
Rob Worsnop 02.12.2013, 18:59
quelle

Tags und Links