Wie man Apache-Commons-HttpClient-3.1 ignorieren HTTPS-Zertifikat Nichtigkeit?
Ich versuche den Apache-Commons-HttpClient-Bibliothek (version 3.1), die Tatsache zu ignorieren, dass das server-Zertifikat hergestellt werden kann, als vertrauenswürdig (wie bewiesen durch die geworfene Ausnahme javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
).
Habe ich Stellen Sie eine Verbindung zu einem HTTPS-server aus Java und ignorieren Sie die Gültigkeit des Sicherheitszertifikats sowie Deaktivieren Sie die Zertifikat-Validierung in Java-SSL-Verbindungen, aber die akzeptierte Antwort auf die erste ist für HttpClient 4.0 (leider kann ich nicht aktualisieren, , es sei denn jemand kann mich in die Richtung der Verwendung von zwei verschiedenen Versionen der gleichen Bibliothek innerhalb des gleichen Projekts), obwohl es eine andere Antwort mit wenig mehr als ein Toter link, der angeblich ging zu einem 3.x Lösung. Der code auf der zweiten Seite scheint überhaupt keine Wirkung, wenn ich eine leicht angepasste version von es (im Prinzip deklarieren Sie die Klassen in der alten Mode statt anonymer inline -, als auch als Anwendung, um TLS
neben SSL
mit SSL
für die Standard-HTTPS-socket-factory, wie in dem Beispiel-code).
Vorzugsweise würde ich gerne etwas, der thread-/Instanz-breit, so dass jede HttpClient
Instanz (und/oder Verwandte Klassen) erstellt werden von meinem servlet-code (nicht ein anderes servlet läuft in den gleichen container) die lax-Zertifikat Validierung Logik, aber an diesem Punkt beginne ich zu fühlen, wie etwas funktioniert, solange es akzeptiert das selbst signierte Zertifikat als gültig.
Ja, ich bin mir bewusst, dass es Auswirkungen auf die Sicherheit, aber der einzige Grund warum brauche ich das überhaupt für Testzwecke. Die Idee ist die Umsetzung einer Konfigurations-option, die steuert, ob die Regel für nicht Vertrauenswürdige Zertifikate vertrauenswürdig sind oder nicht, und lassen Sie es in "don' T Vertrauen, nicht-Vertrauenswürdige server-Zertifikate" als Standard. So kann es leicht an-oder ausgeschaltet werden in der Entwicklung, aber tun Sie es in der Produktion erfordern wird, geht aus dem Weg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Akzeptieren eigensignierter Zertifikate verwenden wir den folgenden code für einen bestimmten
HttpConnection
von commons http-client.Den
EasySSLProtocolSocketFactory
finden Sie im contrib-ssl-Paket. Und dies kann verwendet werden, um nur einzelne verbindungen mit der reduzierten Sicherheits-Einstellung.Es scheint, wie dieses, können auch verwendet werden, um das Protokoll für jeden client, wie hier gezeigt:
Aber ich denke, das hat auch Einfluss auf verbindungen von anderen servlets.
[Bearbeiten]
Sorry, ich weiß nicht, ob dies für Sie zu arbeiten. Nur erkannt, dass wir mit Hilfe von client-3.0.1 und nicht 3.1.
HttpConnection
noch einsetProtocol
- Methode 3.1: svn.apache.org/viewvc/httpcomponents/oac.hc3x/tags/...ProtocolSocketFactory
, das ist nur eine Verallgemeinerung und damit auch nicht notwendig, wenn Sie entfernen die veralteten Konstruktor, dann verwendet er die nicht veraltet contructor schon jetzt, ich werde zu aktualisieren meinem Beitrag.HttpClient
man gehen könnte die Art und Weise der Bereitstellung von it-verpackten version vonHttpConnectionManager
denke ich.EasySSLProtocolSocketFactory
) und es funktionierte immer wie erwartet so weit.