Skip to content

Commit 837414c

Browse files
committed
Make client cert auth work even if server certificate verification is disabled
A bug in the previous connection logic prevented the client certificate from being applied to the SSL context when an insecure trust source was used.
1 parent 900c216 commit 837414c

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

couchbase-analytics-java-client/src/main/java/com/couchbase/analytics/client/java/AnalyticsOkHttpClient.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,16 @@ public AnalyticsOkHttpClient(ClusterOptions.Unmodifiable options, HttpUrl url, C
120120
TrustManagerFactory trustManagerFactory = trustSource.trustManagerFactory();
121121

122122
HandshakeCertificates handshakeCertificates = getHandshakeCertificates(credential, options.security().trustSource());
123+
KeyManager[] keyManagers = new KeyManager[]{handshakeCertificates.keyManager()};
123124

124125
if (trustSource.isInsecure()) {
125126
clientBuilder.hostnameVerifier(insecureHostnameVerifier);
126-
clientBuilder.sslSocketFactory(insecureSslSocketFactory, insecureTrustManager);
127+
clientBuilder.sslSocketFactory(newInsecureSocketFactory(keyManagers), insecureTrustManager);
127128

128129
} else if (trustManagerFactory != null) {
129130
clientBuilder.sslSocketFactory(
130131
newSocketFactory(
131-
new KeyManager[]{handshakeCertificates.keyManager()}, // get client certs from usual place
132+
keyManagers, // get client certs from usual place
132133
trustManagerFactory // let user override the "trust" side of things
133134
),
134135
firstX509TrustManager(trustManagerFactory)
@@ -291,10 +292,8 @@ public String toString() {
291292
}
292293
};
293294

294-
private static final SSLSocketFactory insecureSslSocketFactory = newInsecureSocketFactory();
295-
296-
private static SSLSocketFactory newInsecureSocketFactory() {
297-
return newSocketFactory(null, new TrustManager[]{insecureTrustManager});
295+
private static SSLSocketFactory newInsecureSocketFactory(KeyManager @Nullable [] keyManagers) {
296+
return newSocketFactory(keyManagers, new TrustManager[]{insecureTrustManager});
298297
}
299298

300299
private static SSLSocketFactory newSocketFactory(KeyManager @Nullable [] keyManagers, TrustManagerFactory trustManagerFactory) {

0 commit comments

Comments
 (0)