es 开启 x-pack安全认证,java客户端的链接方式

   日期:2020-08-05     浏览:376    评论:0    
核心提示:应用场景:本文为logstash to es 的后续,es版本为 6.8.0 logstash to es 的实现 当我们给es 开启了权限认证后,上文解决了 如何 给 logstash 生成 pem证书 及 配置,如何把logstash 解析后的数据 发送 给 es 存储,那么很自然的 我们会考虑一个问题,如何 用java 客户端 去 链接 开启了 x-pack 权限认证的 es集群。一、java端 引包ps:我这边用的 springboot项目第一步:添加 elasticsearch的 repo_x-

应用场景:
本文为logstash to es 的后续,es版本为 6.8.0,当我们给es 开启了权限认证后,上文解决了 如何 给 logstash 生成 pem证书 及 配置,如何把logstash 解析后的数据 发送 给 es 存储,那么很自然的 我们会考虑一个问题,如何 用java 客户端 去 链接 开启了 x-pack 权限认证的 es集群。

一、java端 引包
ps:我这边用的 springboot项目

第一步:添加 elasticsearch的 repo

<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>

第二步:导入包

<!-- ES -->
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>6.8.0</version>
		</dependency>
		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>transport</artifactId>
			<version>6.8.0</version>
			<exclusions>
				<exclusion>
						<groupId>com.fasterxml.jackson.core</groupId>
						<artifactId>jackson-databind</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.elasticsearch</groupId>
					<artifactId>elasticsearch</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>x-pack-transport</artifactId>
			<version>6.8.0</version>
		</dependency>

二、客户端实例化代码段

Settings settings = Settings.builder()
  .put("cluster.name", dataContainer.getContainerName())
  //p12 证书 用 keystore ,truststore方式来传参,将java 客户端 的所在 ip host 配置在es 集群所在的 hosts文件中 生成证书时指定 --dns “hostname“
  //当开启 x-pack 安全认证时 将此处放开
  .put("xpack.security.user", "elastic:yourPassword")
  .put("xpack.security.transport.ssl.keystore.path", "C:\\Users\\Administrator\\Desktop\\xp\\lsy-t470p.p12")
  .put("xpack.security.transport.ssl.truststore.path", "C:\\Users\\Administrator\\Desktop\\xp\\lsy-t470p.p12")
  .put("xpack.security.transport.ssl.verification_mode", "certificate")
  .put("xpack.security.transport.ssl.enabled", true)
  .build();
  TransportClient transportClient = new PreBuiltXPackTransportClient(settings);

三、注意事项
1、将你的java客户端所在的节点 ip host 映射 配置在 es集群的每个节点的hosts中
比如:我这边 java后台开发环境的 主机 ip为10.20.30.40
那么修改 es的 各个节点的 /etc/hosts 文件
vim /etc/hots 添加 以下 ip、host 映射
10.20.30.40 lsy-t470p
2、这里主要 提示一下 es的 PKCS#12类型的证书 (后缀 .p12)的生成,即上文 提到的 lsy-t470p.p12 是怎么来的???

*注意:这里说明一下  参数  --dns 是指定 为哪一个 节点 生成证书 --name 是 为生成的证书 指定名字* 
1、第一条命令:bin/elasticsearch-certutil ca
执行第一条命令生成根证书,一路回车!会得到elastic-stack-ca.p12

2、执行第二条命令,一路回车!会得到节点  lsy-t470p 的节点证书 lsy-t470p.p12
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --dns lsy-t470p --name lsy-t470p

3、开启x-pack后 客户端 的 要用 PreBuiltXPackTransportClient 代替 以前的 PreBuiltTransportClient

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LSY929981117/article/details/107714001

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服