JAVA通过用户验证访问Elasticsearch

为了保证安全,Elasticsearch中启用用户权限验证。本文将对服务端的配置、客户端访问的配置进行一些个人总结。
环境:CentOS 7.0
软件版本:elasticsearch 7.3.1

  1. 服务端配置
    进入安装目录下config,编辑elasticsearch.yml文件,在最后添加如下配置:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

重启elasticserch生效。

  1. 客户端访问配置
    (1) 通过RestHighLevelClient访问
public RestHighLevelClient restHighLevelClient() {
        RestHighLevelClient client;
        try {
            RestClientBuilder builder = RestClient.builder(getHttpHosts());
            // 配置connect超时时间、socket超时时间
            RestClientBuilder.RequestConfigCallback requestConfigCallback = new RestClientBuilder.RequestConfigCallback() {
                @Override
                public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) {
                    return builder.setConnectTimeout(10 * 60 * 1000).setSocketTimeout(10 * 60 * 1000);
                }
            };
            builder.setRequestConfigCallback(requestConfigCallback);
            
            // 配置用户、密码验证
            CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("用户名", "密码"));
            builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));

            client = new RestHighLevelClient(builder);

            ClusterHealthRequest request = new ClusterHealthRequest();
            ClusterHealthResponse clusterHealthResponse = client.cluster().health(request, RequestOptions.DEFAULT);
            logger.info("连接ES集群成功!集群状态:{}", clusterHealthResponse.getStatus().name());
            return client;
        } catch (Exception e) {
            logger.error("连接ES集群失败!", e);
            return null;
        }
    }

(2)使用http访问
访问url模板:http://用户名:密码@IP:PORT/_cat/health,示例如下:

public static String get(String url, String encoding) {
		String url = String.format("http://%s:%s@%s:%s/_cat/health", "用户名","密码","IP","PORT");
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response;
        HttpGet httpGet;
        HttpEntity httpEntity;
        String re = null;
        try {
            httpGet = new HttpGet(url);
            response = httpClient.execute(httpGet);
            httpEntity = response.getEntity();
            if (httpEntity != null) {
                re = EntityUtils.toString(httpEntity, encoding);
            }
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        } finally {
            try {
                httpClient.close();
            } catch (IOException e) {
                logger.error(e.getMessage(), e);
            }
        }
        return re;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java中使用Elasticsearch Xpack认证,需要进行以下步骤: 1. 在elasticsearch.yml配置文件中启用Xpack安全特性,可以通过在elasticsearch.yml中添加以下配置实现: ``` xpack.security.enabled: true ``` 2. 为Elasticsearch集群生成证书和密钥。可以使用elasticsearch-certutil工具生成证书和密钥,生成的证书可以是PKCS#12格式或PEM格式。以下是生成证书和密钥的命令示例: - PKCS#12格式生成: ``` elasticsearch-certutil cert --ca elastic-stack-ca.p12 ``` - PEM格式生成: ``` elasticsearch-certutil cert --pem ``` 3. 创建一个证书颁发机构(Certificate Authority)用于签发证书。同样,可以使用elasticsearch-certutil工具生成证书颁发机构,生成的证书颁发机构可以是PKCS#12格式或PEM格式。以下是生成证书颁发机构的命令示例: - PKCS#12格式生成(推荐在代码中使用): ``` elasticsearch-certutil ca ``` - PEM格式生成(推荐在Kibana中使用): ``` elasticsearch-certutil ca --pem ``` 这样,你就可以在Java中使用Elasticsearch Xpack认证了。可以使用Elasticsearch Java客户端库来连接和操作Elasticsearch集群,同时使用生成的证书和密钥进行认证。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [elasticsearch加密xpack,java客户端访问xpack集群SSL](https://blog.csdn.net/JGMa_TiMo/article/details/97396313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值