当前位置: 首页 > news >正文

ES证书过期替换方案

简介: 在生产环境中,Elasticsearch 集群的证书可能会因为过期而导致集群无法正常工作。为了避免这种情况的发生,我们需要及时更新证书,并保证更新证书的过程中保持 Elasticsearch 集群的高可用性和数据安全性。

 

集群环境


ES集群版本:v6.810和v7.13.4

加密参数配置:

xpack.security.enabled: true
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

通过配置文件看到,只针对集群中节点之间的通信进行了加密,而且是自签的CA。

生成证书为您的Elasticearch集群创建一个证书颁发机构。例如,使用elasticsearch-certutil ca命令:

bin/elasticsearch-certutil ca --days 36500

为群集中的每个节点生成证书和私钥。例如,使用elasticsearch-certutil cert 命令:

bin/elasticsearch-certutil cert  --days 36500 --ca elastic-stack-ca.p12

 

 

发现过期


通过批量扫描集群信息,发现证书过期

GET /_ssl/certificates
[{"path" : "certs/elastic-certificates.p12","format" : "PKCS12","alias" : "instance","subject_dn" : "CN=Elastic Certificate Tool Autogenerated CA","serial_number" : "e365c63bf8050b2d1a73025c37aaa6d8d0772f06","has_private_key" : false,"expiry" : "2023-04-26T09:13:27.000Z"},{"path" : "certs/elastic-certificates.p12","format" : "PKCS12","alias" : "instance","subject_dn" : "CN=instance","serial_number" : "bff8e3ed43fcc2abc4e6951bd6064ed53ddb7b56","has_private_key" : true,"expiry" : "2023-04-26T09:13:44.000Z"},{"path" : "certs/elastic-certificates.p12","format" : "PKCS12","alias" : "ca","subject_dn" : "CN=Elastic Certificate Tool Autogenerated CA","serial_number" : "e365c63bf8050b2d1a73025c37aaa6d8d0772f06","has_private_key" : false,"expiry" : "2023-04-26T09:13:27.000Z"}
]

 

 

参考因素

  1. 是否会导致节点间通信异常
  2. 是否需要重启节点,滚动重启还是全部停掉再启动
  3. 服务连接是否受影响,数据一致性是否有保障

 

解决方案 及问题

基于ES6.8.10-ARC(通用3节点集群) 验证测试

遇到问题:

将证书设置1天过期,过期之后查看,集群还是正常运行(各种方式查看新证书确实都生效了)

结论总结:
1.批量下发证书,从各个节点日志可以看出,证书已更新

 [2023-04-26T10:12:41,125][INFO ][o.e.x.c.s.SSLConfigurationReloader] [es_10.4.6.2_9211] reloaded [/work/idb/es9211/config/certs/elastic-certificates.p12] and updated ssl contexts using this file

2.集群中的某个节点,重启时,如果自己的证书和其他节点不一致,可以启动但是无法被其他节点识别,无法加入集群 

直接替换证书,自动就被其他节点识别到,然后节点正常加入集群 

 3.查询命令:

查询证书过期

GET /_ssl/certificates

验证证书是否有效

curl -X GET "http://escluster111.es.zcinc.com:9211/_cluster/health?pretty" -uelastic:OWRmNjA5MDlkNGM3 --cacert elastic-certificates.p12
GET /_nodes?filter_path=**.transport.ssl

 

 

官网说明


关于证书更新的文档,版本:>=7.13

如果使用相同的CA,签发新的证书,替换原来的文件,是不需要重启节点的

如果使用不同的CA,签发新的证书,替换原来的文件,是需要滚动重启的

这里有3个点需要注意:

  1. 没有小于<7.13的版本文档说明,但是我测试6.8.10,重启和不重启,都能查询到新的证书
  2. 测试6.8.10证书过期,集群依然可以正常使用,读写、新连接,都没有影响,具体原因不清楚
  3. 为了安全,还是批量替换证书,并滚动重启一遍

以下是官网文档说:

Updating node security certificates | Elasticsearch Guide [7.13] | Elastic

使用相同的CA:

Update certificates with the same CA | Elasticsearch Guide [7.13] | Elastic

使用不同的CA:

Update security certificates with a different CA | Elasticsearch Guide [7.13] | Elastic

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python中的数据结构:五彩斑斓的糖果盒
  • 【深度学习入门篇 ⑦】PyTorch池化层
  • python自动化之用flask校验接口token(把token作为参数)
  • Web 安全之 VAPT (漏洞评估与渗透测试)详解
  • GB35114国密算法-GMSSL
  • list的模拟实现
  • 【排序算法】1.冒泡排序-C语言实现
  • C++基础语法:STL之容器(1)--容器概述和序列概述
  • 「Python」基于Gunicorn、Flask和Docker的高并发部署
  • 人像视频预处理【时间裁剪+画面裁切+调整帧率】
  • 工业三防平板可优化工厂流程管理
  • Redis--布隆过滤器
  • Windows与Linux双机热备软件推荐
  • 设计模式使用场景实现示例及优缺点(行为型模式——命令模式)
  • Mac安装stable diffusion 工具
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【Amaple教程】5. 插件
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • CSS实用技巧
  • Docker下部署自己的LNMP工作环境
  • gulp 教程
  • jQuery(一)
  • Laravel 实践之路: 数据库迁移与数据填充
  • leetcode98. Validate Binary Search Tree
  • Netty 4.1 源代码学习:线程模型
  • 从零开始在ubuntu上搭建node开发环境
  • 搭建gitbook 和 访问权限认证
  • 聊聊sentinel的DegradeSlot
  • 前端工程化(Gulp、Webpack)-webpack
  • 入门到放弃node系列之Hello Word篇
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 智能网联汽车信息安全
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Java总结 - String - 这篇请使劲喷我
  • MPAndroidChart 教程:Y轴 YAxis
  • postgresql行列转换函数
  • 湖北分布式智能数据采集方法有哪些?
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​MySQL主从复制一致性检测
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #{}和${}的区别?
  • #define
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (26)4.7 字符函数和字符串函数
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net framework 4.8 开发windows系统服务
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .Net接口调试与案例
  • @31省区市高考时间表来了,祝考试成功
  • @JoinTable会自动删除关联表的数据