gpt4 book ai didi

java - ES 7.4.1 - 身份验证 [Rest API]

转载 作者:行者123 更新时间:2023-11-29 02:53:23 24 4
gpt4 key购买 nike

我是 ES 的新手,我的新工作有一项任务是从 6.4.2 升级到 7.4.1——从 TCP 客户端到 Rest 高级 API。

之前我们是这样构建客户端的:

Settings settings = Settings.builder()
.put("xpack.security.user", String.format("%s:%s",esJavaUser,esJavaPassword))
.put("cluster.name", esClusterName)
.put("xpack.security.transport.ssl.enabled", xpackSecurityTransportSslEnabled)
.put("xpack.ssl.certificate_authorities", xpackSslCertificateAuthorities)
.build();

client = new PreBuiltXPackTransportClient(settings);

现在,在 rest API 中,它变成了这样:

final CredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(esJavaUser, esJavaPassword));

RestClientBuilder restClientBuilder = RestClient.builder(hosts)
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider));
restHighLevelClient = new RestHighLevelClient(restClientBuilder);

在这个构建中,我通过 CredentialsProvider 设置了 ES 用户和密码但是ssl.enabledcertificate_authorities” 呢?我应该如何为他们提供 rest API?

最佳答案

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

因为作为开发者,我一直在这里寻找答案,在stackoverflow中,我决定不删除这个问题并复制TimV回答:

您要查找的文档在此处:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.4/_encrypted_communication.html

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

RestClient.builder(hosts)

如果您使用 SSL,您希望在构造 HttpHost 对象(hosts).

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

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

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

关于java - ES 7.4.1 - 身份验证 [Rest API],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com