2016-08-21 4 views
0

Ich habe Jersey-App, die Jersey-Client verwendet, um einen Server anzufordern. Server verwendet Client-Zertifikat und grundlegende Authentifizierung für die Kommunikation. Ich habe Setup-Vertrauen und Schlüsselspeicher ordnungsgemäß mit Zertifikaten in GlasfischenJava Jersey sendet kein SSL-Client-Zertifikat

Server Zertifikatskette: Server cert -> CA Inter -> CA

Client-Zertifikat-Kette: Client-Zertifikat -> CA Inter -> CA

CA ist ein selbst erstelltes/signiertes Zertifikat und nicht von einem Anbieter.

-Vertrauen:

1) CA

2) CA Inter

Schlüsselspeicher:

1) Client-Zertifikat mit vollständiger Kette

Code: (speichern in Umgebung gesetzt)

sSLContext = SslConfigurator.newInstance().securityProtocol("TLSv1.2").createSSLContext(); 
HttpAuthenticationFeature authFeature = HttpAuthenticationFeature.basic("user", "pass"); 
client = ClientBuilder.newBuilder().sslContext(sSLContext).build(); 
client.register(authFeature); 

Alle Zertifikate und Ketten werden ordnungsgemäß geladen.

jedoch, wenn ich eine Anfrage erhalten i

Info: Warning: no suitable certificate found - continuing without client authentication 

und dann bekomme ich handshake_failure Fehler

ich diese Fehler

Info: http-listener-1(3), setSoTimeout(0) called 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1.1 

ich unbegrenzte chiper Erweiterung installiert haben und prüfen, es funktioniert. Immer noch diese bekommen.

Ich habe auch Zertifikat auf Browser überprüft und ich bin in der Lage, mit dem Server über Browser verbinden und Daten mit den gleichen Zertifikaten abrufen.

Wie bekomme ich 2-Wege-SSL zu arbeiten?

Antwort

0

Sowohl der Client als auch der Server benötigen das CA-Zertifikat in ihren jeweiligen Truststores. Ich würde sagen, der Server tut es nicht.

Wenn der Server fordert das Client-Zertifikat, sendet er die Liste der vertrauenswürdigen Zertifizierungsstellen, und wenn der Kunde kein Zertifikat signiert von einem von ihnen es nicht ein sendet, ich habe

+0

zwei Schlüsselspeicher cacerts finden .jks und keystore.jks, was ist der Truststore des Clients? Ich habe CA und CA in beiden Server und Client-Kette und sie übereinstimmen. Ich habe ca-certs.pem als cert-Kette in Apache-Server festgelegt. Das enthält CA-Zertifikat. Und ich habe überprüft, dass der Server-Cert-Anfragetyp mit einem im Client vorhandenen übereinstimmt – Akshit