问问题
398 次
1 回答
0
我从 ES 论坛得到了答案(没想到先在那里问..)
因为,作为开发人员,我总是在这里寻找答案,在 stackoverflow 中,我决定不删除这个问题并复制TimV答案:
您正在寻找的文档在这里:https ://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.4/_encrypted_communication.html
HttpHost
SSL 根据传递给构建器的对象中的方案(协议)自动启用(或不启用) 。
RestClient.builder(主机)
如果您使用 SSL,您希望在构造对象 ( )"https"
时作为方案(第三个参数)传递。HttpHost
hosts
不幸的是,没有简单的方法可以传递certificate_authorities
给 Rest 客户端,您需要将这些证书转换为标准的 Java 信任库。您可能可以在网上找到一些示例代码(“将 PEM 证书转换为 Java 信任库”),但其要点是:
- 打开证书颁发机构文件作为
InputStream
- 创建 X.509 证书工厂:
java.security.cert.CertificateFactory.getInstance("X.509")
- 调用
generateCertificates
证书工厂将这些证书文件读入 javaCertificate
对象 - 构造一个空
KeyStore
对象 - 将加载的证书添加为受信任条目
- 把它传给
SSLContextBuilder.loadTrustMaterial
链接:https ://discuss.elastic.co/t/es-7-4-1-authentication-rest-api/211969
于 2019-12-17T06:05:21.517 回答