【问题标题】:ES 7.4.1 - Authentication [Rest API]ES 7.4.1 - 身份验证 [Rest API]
【发布时间】:2020-04-06 01:02:28
【问题描述】:

我是 ES 的新手,我的新工作有一个任务是从 6.4.2 升级到 7.4.1 - 从 TCP 客户端到 Rest High Level 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?

【问题讨论】:

    标签: java authentication elasticsearch certificate elasticsearch-x-pack


    【解决方案1】:

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

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

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

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

    RestClient.builder(主机)

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

    不幸的是,没有简单的方法可以将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

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 2019-03-31
      • 2018-07-26
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2019-06-22
      相关资源
      最近更新 更多