3
4

1 回答 1

0

我从 ES 论坛得到了答案(没想到先在那里问..)

因为,作为开发人员,我总是在这里寻找答案,在 stackoverflow 中,我决定不删除这个问题并复制TimV答案:

您正在寻找的文档在这里:https ://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.4/_encrypted_communication.html

HttpHostSSL 根据传递给构建器的对象中的方案(协议)自动启用(或不启用) 。

RestClient.builder(主机)

如果您使用 SSL,您希望在构造对象 ( )"https"时作为方案(第三个参数)传递。HttpHosthosts

不幸的是,没有简单的方法可以传递certificate_authorities给 Rest 客户端,您需要将这些证书转换为标准的 Java 信任库。您可能可以在网上找到一些示例代码(“将 PEM 证书转换为 Java 信任库”),但其要点是:

  1. 打开证书颁发机构文件作为InputStream
  2. 创建 X.509 证书工厂:java.security.cert.CertificateFactory.getInstance("X.509")
  3. 调用generateCertificates证书工厂将这些证书文件读入 javaCertificate对象
  4. 构造一个空KeyStore对象
  5. 将加载的证书添加为受信任条目
  6. 把它传给SSLContextBuilder.loadTrustMaterial

链接:https ://discuss.elastic.co/t/es-7-4-1-authentication-rest-api/211969

于 2019-12-17T06:05:21.517 回答