版本7.9.1,我在es集群开启了ssl认证,应如何连接到es集群?我尝试了如下的方式:
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
Path keyStorePath = Paths.get("C:/Users/porchidy/Desktop/fsdownload/ca.crt");
String keyStorePass = "";
KeyStore truststore = KeyStore.getInstance("jks");
try {
InputStream is = Files.newInputStream(keyStorePath);
try {
truststore.load(is, keyStorePass.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
SSLContextBuilder sslBuilder = null;
try {
sslBuilder = SSLContexts.custom().loadTrustMaterial(truststore, null);
} catch (Exception e) {
e.printStackTrace();
}
final SSLContext sslContext = sslBuilder.build();
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
httpHosts).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.disableAuthCaching();
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
return httpClientBuilder
.setSSLContext(sslContext)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);
}
}));
但是提示错误:java.io.IOException: Invalid keystore format;请问应该如何处理
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
Path keyStorePath = Paths.get("C:/Users/porchidy/Desktop/fsdownload/ca.crt");
String keyStorePass = "";
KeyStore truststore = KeyStore.getInstance("jks");
try {
InputStream is = Files.newInputStream(keyStorePath);
try {
truststore.load(is, keyStorePass.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
SSLContextBuilder sslBuilder = null;
try {
sslBuilder = SSLContexts.custom().loadTrustMaterial(truststore, null);
} catch (Exception e) {
e.printStackTrace();
}
final SSLContext sslContext = sslBuilder.build();
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
httpHosts).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.disableAuthCaching();
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
return httpClientBuilder
.setSSLContext(sslContext)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);
}
}));
但是提示错误:java.io.IOException: Invalid keystore format;请问应该如何处理
0 个回复