Settings settings1 = Settings.builder()
.put("path.home", "/")
.put("searchguard.ssl.transport.enabled", true)
.put("cluster.name", "searchguard_demo")
.put("searchguard.ssl.transport.enforce_hostname_verification", "false")
.put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMCERT_FILEPATH,"/home/adgog/Documents/elasticsearch-6.3.0/config/kirk.pem")
.put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMKEY_FILEPATH, "/home/adgog/Documents/elasticsearch-6.3.0/config/kirk-key.pem")
.put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMTRUSTEDCAS_FILEPATH, "/home/adgog/Documents/elasticsearch-6.3.0/config/root-ca.pem")
.build();
TransportClient client = new PreBuiltTransportClient(settings1, SearchGuardPlugin.class)
.addTransportAddress(new TransportAddress(InetAddress.getByName("10.0.2.15"), 9300));
String user = "admin";
String password = "admin";
String keystorePassword= "pass123";
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, password));
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(new File("/home/adgog/my_keystore.jks"), keystorePassword.toCharArray(),
new TrustSelfSignedStrategy()).build();
RestHighLevelClient client1 = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "https")).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider).setSSLContext(sslContext)));
Is there any way to connect using certificates only, similar to the transport client? Or is it necessary to pass username and password as well?