• ES证书过期替换方案


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

     

    集群环境


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

    加密参数配置:

    1. xpack.security.enabled: true
    2. xpack.security.transport.ssl.enabled: true
    3. xpack.security.transport.ssl.verification_mode: certificate
    4. xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
    5. 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

  • 相关阅读:
    Vue框架学习笔记——Vue框架的安装
    一文速学-让神经网络不再神秘,一天速学神经网络基础(五)-最优化
    Linux·知识点常见问题
    sequencer和sequence
    STL-函数对象、谓词、常用算法
    QFrame类控件
    win10系统的应用商店不见了怎么安装回来
    ant-design-vue 下拉框随页面滚动问题
    springboot+vue运动场馆预约系统python+django体育馆预约系统
    TestDeploy v3.0构思
  • 原文地址:https://blog.csdn.net/qq_34556414/article/details/140401811