2016-06-26 19 views
0

Ich verwende einen REST-Service auf WAS mit Apache HTTPClient. Dies ist HTTPS (PKI) und Zielsicherheit vertraut wird in WAS Speicher Vertrauen und SSL-Zertifikat und Schlüsselverwaltung> Endpoint-Security-Konfigurationen verwalten> OutBound> http> SSLConfiguration gerichtet ist SSLConfigraiton (mit dem Vertrauen Geschäft, in dem Ziel zu korrigieren cert ist vertrauenswürdig). Wenn ich jedoch den Zieldienst über den HTTP-Client aufruft, wird Peer nicht authentifiziert.Websphere-Anwendungsserver - HTTPClient - SSL-Peer nicht authentifiziert

Wenn ich durch verschiedene Formen gehen, sehe ich Vorschläge wie Punktbelastung SSL-Kontext im Code.,

Aber ist nicht jeder HTTP aus meinem JVM gebunden (WAS Server) sollte an meinem Trust Store validiert werden (die eingestellt wird, bei WURDE SSL-Zertifikat und Key Management)

Am'I etwas anderes fehlt? Bitte vorschlagen.

Antwort

0

Zum Authentifizieren von SSL-Verbindungen stellt WAS ein SSL-Zertifikat bereit, bei dem es sich um ein selbstsigniertes Zertifikat handelt. In diesem Fall müssen Sie das Stammzertifikat von WAS in den Trust Store importieren, der vom HTTPClient-Programm verwendet wird.

Weitere Informationen zu SSL, das von WebSphere implementiert wird, finden Sie im IBM Knowledge Center unter this link.

Um Ihre zweite Frage zu beantworten, werden ausgehende Verbindungen mit dem WAS-Truststore überprüft. In Ihrem Fall verwenden Sie HTTPClient, um einen Service für WAS auszulösen. Dies würde als eingehende Verbindung aus der WAS-Perspektive definiert werden.

0

Ich hatte diese issiue zu

ich es mit dem Standard-SSLSocketFactory gelöst. Dadurch kann Ihr HttpClient den Truststore von Ihrem WebSphreer aus verwenden. Dieser Code ist für HttpClient Version 4.2 mit den neueren Versionen das könntest du direkt mit der Builder Klasse machen denke ich.

// register default SSLSocketFactory to use SSL Certificates from Websphere 
    javax.net.ssl.SSLSocketFactory wasSslFactory = (javax.net.ssl.SSLSocketFactory) javax.net.ssl.SSLSocketFactory.getDefault(); 
    org.apache.http.conn.ssl.SSLSocketFactory socketFactory = new org.apache.http.conn.ssl.SSLSocketFactory(wasSslFactory, org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 
    Scheme scheme = new Scheme("https", 443, socketFactory); 
    httpClient.getConnectionManager().getSchemeRegistry().register(scheme);