2017-11-16 27 views
2

Java REST API(RestHighLevelClient)を使用して、HTTPS経由でElasticsearch 5.6サーバーと通信したいと考えています。しかし、サーバーの証明書は自己署名されており、接続しようとするとSSLHandshakeExceptionがスローされます。自己署名証明書付きのElasticsearch Java REST APIの使用

自己署名証明書を受け入れるようにRESTクライアントを設定する方法はありますか?

答えて

1

私はこれをカスタムJavaキーストアを使用して動作させました。ここに私のコードだ:

CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password)); 

final SSLContext sslContext = SSLContexts.custom() 
     .loadTrustMaterial(new File("my_keystore.jks"), keystorePassword.toCharArray(), 
      new TrustSelfSignedStrategy()) 
     .build(); 


RestClient client = RestClient.builder(new HttpHost(host, port, scheme)).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder 
     .setDefaultCredentialsProvider(credentialsProvider) 
     .setSSLContext(sslContext) 
).build(); 

キーストアを作成するには、私は、Firefox経由でドメインのための証明書をダウンロードして、使用:

keytool -import -v -trustcacerts -file my_domain.crt -keystore my_keystore.jks -keypass password -storepass password 
+0

独自のキーストアが実際に推奨される使用します。標準のJavaランタイムcacertsファイルも使用できます。カスタムSSLContextは必要ありませんが、そのファイルは各ランタイムアップデートで上書きされます。 – Gimby

関連する問題