elasticsearch加密xpack,java客户端访问xpack集群SSL

本文详细介绍了如何在Elasticsearch集群中启用X-Pack进行加密通信,包括使用SSL/TLS加密、设置用户认证及证书管理。同时,提供了Java客户端通过HTTPS访问加密集群的方法,以及Kibana配置指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文前期使用6.5版本完成,本次版本将使用7.12.1版本修改

  • xpack已经在es6.3之后默认集成,本文包含:
  • 1、es集群使用xpack加密,达到访问集群需要用户密码登录的效果。
  • 2、采用SSL加密通信,提供https访问方式
  • 3、java客户端如何连接加密后的es集群(9200,9300端口)httpclient方式,restClient高低版本方式都有包含
  • 4、使用kibana界面化工具连接操作加密后的es集群
开启xpack
  • elasticsearch.yml 中加上: xpack.security.enabled: true

    注::后空一个空格,如果是es集群请务必全部添加此配置
    7.12.1版本需要加上 xpack.security.transport.ssl.enabled: false

  • 确保集群健康访问_xpack/license/start_trial?acknowledge=true(6.8以上版本省略此步骤)

    开启xpack功能,这时候集群会立马提示您输入用户名密码的弹窗进行登录,别急还需要设置一下
    注:(如果只需要加密功能,可以省略此步骤,以便永久免费使用,官方对于基本版不收费)此开启的是试用版,xpack的破解,请自行搜索,我文末也会提供一个6.5.0的破解包,替换一下就可以用了

  • 设置es集群用户名密码

    #自动生成(二选一) elasticsearch-setup-passwords auto    
    #手动生成(推荐) 	 elasticsearch-setup-passwords interactive
    

    此处最容易出现错误,请保证您的集群是健康的并且全部开启了xpack功能,且配置一样,如果生成失败,请检查自己的集群配置,如果设置密码失败的可以试试这个博文的顺序ELK6.6.0 Xpack

  • 为Elasticearch集群创建一个证书颁发机构

    PKCS#12格式生成(代码推荐):elasticsearch-certutil ca
    PEM格式格式生成(kibana推荐):elasticsearch-certutil ca --pem
    

    生成过程会提示输入密码,作用是访问证书的安全性,可以不设置
    注:7.12.1版本会把文件生成到bin同级目录,下面放置的.p12证书的时候不用改变路径,判断是有一个程序base目录设置.

  • 为es集群生成证书和秘钥

    PKCS#12格式生成:elasticsearch-certutil cert --ca elastic-stack-ca.p12 
    PEM格式格式生成:elasticsearch-certutil cert --pem
    

    同上会提示输入密码,略过
    pkcs12证书里面包含了秘钥所以只有一个文件,pem会有独立的证书和key
    请把生成的证书elastic-certificates.p12拷贝到集群中的其他节点,否则加密失效

  • TLS/SSL加密Transport通信

     xpack.security.transport.ssl.enabled: true  
     xpack.security.transport.ssl.verification_mode: certificate
     xpack.security.transport.ssl.keystore.path: certs\elastic-certificates.p12
     xpack.security.transport.ssl.truststore.path: certs\elastic-certificates.p12
    
  • 加密https访问

    xpack.security.http.ssl.enabled: true 
    xpack.security.http.ssl.keystore.path: certs\elastic-certificates.p12
    xpack.security.http.ssl.truststore.path: certs\elastic-certificates.p12
    
按照上面的步骤集群就可以实现加密访问,下面是使用java访问加密后的es集群
给出pom
<repositories>
      <!-- add the elasticsearch repo -->
      <repository>
          <id>elasticsearch-releases</id>
          <url>https://artifacts.elastic.co/maven</url>
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
              <enabled>false</enabled>
          </snapshots>
      </repository>
  </repositories>
  <!-- 加入elasticsearch -->
        <!-- https://mvnrepository.com/artifact/org.elasticsearch.plugin/transport-netty4-client -->
        <dependency>
            <groupId>org.elasticsearch.plugin</groupId>
            <artifactId>transport-netty4-client</artifactId>
            <version>${es.version}</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>${es.version}</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>${es.version}</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>x-pack-transport</artifactId>
            <version>${es.version}</version>
        </dependency>
        <!--java rest客户端连接9200-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>6.5.0</version>
        </dependency>

        <!--httpclient-->
        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>
HttpClient方式
package com.**.**.configuration;

import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl
要在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 ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值