es 7.5.1版本 集群配置安全证书和开启ssl加密通信

    技术2025-04-20  9

    前提是:已经搭建起来集群了,并且集群可以正常运行。所有的节点都是健康的状态。

    另外我所有的操作都是直接使用启动es集群的用户做的,如果不是这个用户的话,对生成的证书还需要赋予可执行权限。

    # # 生成证书,给集群添加证书认证

      生成证书不需关注集群是否启动。也就是不管集群有没有启动,都可以生成证书。

      先进到 bin 目录下:

     然后执行(执行这个的时候,全部回车就可以,不再对证书设置密码,如果这里再设置其他的密码的话,需要在yml里边加其他的配置,我用没有加的方式) : ./elasticsearch-certutil ca

    这样运行则会在:如下图,生成一个

     接着还在 bin 目录下执行(还是一路直接回车,因为上边就没有设置密码):./elasticsearch-certutil cert --ca elastic-stack-ca.p12

     会生成第二个证书文件:

     接着把这个证书文件 cp 到 config 目录下

     如果你有多个节点的话,则每个节点的的config 下边都需要放一份 证书文件,或者配置文件,直接指定这同一份证书文件。

     

    # # 修改 config 里边的配置文件

    添加如下的配置:

    # 开启安全认证 xpack.security.enabled: true # 开启ssl xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate # 生成ca证书 xpack.security.transport.ssl.keystore.path: /es/elasticsearch-7.5.0/config/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /es/elasticsearch-7.5.0/config/elastic-certificates.p12

     然后这个时候就需要重新启动集群了,重启集群配置才能生效。

     这个时候应该成功,自己去 logs 日志文件里边查看一下集群是否正常启动

     

    # # 添加用户名和密码

     接下来还是到 bin下边执行,需要分别设置几个密码,可以设置成相同的。

    # 配置密码 ./elasticsearch-setup-passwords interactive [angus@Server bin]#./elasticsearch-setup-passwords interactive Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user. You will be prompted to enter passwords as the process progresses. Please confirm that you would like to continue [y/N]y Enter password for [elastic]: Reenter password for [elastic]: Passwords do not match. Try again. Enter password for [elastic]: Reenter password for [elastic]: Enter password for [apm_system]: Reenter password for [apm_system]: Enter password for [kibana]: Reenter password for [kibana]: Enter password for [logstash_system]: Reenter password for [logstash_system]: Enter password for [beats_system]: Reenter password for [beats_system]: Enter password for [remote_monitoring_user]: Reenter password for [remote_monitoring_user]: Changed password for user [apm_system] Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [beats_system] Changed password for user [remote_monitoring_user] Changed password for user [elastic]

    # # 开启 走https 请求(所有的请求必须走 https )

      还是修改 config 下边的 elasticsearch.yml 文件

    xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: /es/elasticsearch-7.5.0/config/elastic-certificates.p12 xpack.security.http.ssl.truststore.path: /es/elasticsearch-7.5.0/config/elastic-certificates.p12

     

    # # 修改完上边的,就会发现,kibana连不上了,需要修改kibana 的配置文件

     到 存放我们生成的证书的目录下去,也就是 config 下边,然后执行命令  openssl pkcs12 -in elastic-certificates.p12 -cacerts -nokeys -out elastic-ca.pem  则会生成一个文件如下:

     然后 

    pwd 

    看一下当前的路径,然后修养kibana 的配置文件

    vim kibana.yml server.host: 0.0.0.0 // ip 替换成自己的ip elasticsearch.hosts: ["https://10.10.10.10:9200"] elasticsearch.username: kibana // 密码替换成自己在上边生成的密码 elasticsearch.password: 111 //path替换成 pwd 查看出来的路径,也就是我们生成的 elastic-ca.pem 证书的路径 elasticsearch.ssl.certificateAuthorities: ["path/elastic-ca.pem"] elasticsearch.ssl.verificationMode: certificate

     然后可以启动 kibana了,去kibana 的bin目录下执行,然后查看日志的结果

    ./kibana > kibana.log & 

     如果之前已经启动过kibana了:使用这个命令   

    lsof -i:5601

       (5601 还是kibana 默认的端口号,如果没有改过就是5601,如果自己改过,就用自己的)

     可以查看出来 kibana的 进程号,然后 

     kill  -9  进程号

     进程号如下:

     然后重启kibana 

    ./kibana > kibana.log & 

     

    Processed: 0.008, SQL: 9