Мой кластер имеет следующие конфигурации
protocol: TLS
algorithm: SunX509
store_type: JKS
Ниже приведен код работающего драйвера 3.4 java.
Cluster.builder()
.addContactPoints(hostNameList)
.withCredentials(username, password)
.withPort(port)
.withSSL(getSslOptions()).build().connect();
private static SSLOptions getSslOptions() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new TrustAllX509TrustManager()}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((string, ssls) -> true);
return RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(sc).build();
}
public class TrustAllX509TrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
Аналогично, я я пытаюсь с драйвером 4.5 java но я получаю сообщение об ошибке - com.datastax.oss.driver.api.core.AllNodesFailedException: не удалось связаться с любой точкой контакта
код
CqlSession.builder()
.withAuthCredentials(username, password)
.addContactPoints(Arrays.stream(hostNameList).map(host -> new InetSocketAddress(host, port)).collect(Collectors.toList()))
.withSslContext(getSslContext()).build();
private SSLContext getSslContext() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new TrustAllX509TrustManager()}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((string, ssls) -> true);
return sc;
}
Мне нужен общий подход, поэтому я не передаю детали хранилища ключей.