Elasticsearch7.10 开发中配置伪集群的TLS和身份验证(基础)

二、开发中配置伪集群的TLS和身份验证(基础)

参看资料:
基础
扩展
视频
Document

很详细的配置,支持博客主【https://knner.wang/】链接

我这里用到的是基础板(免费的),自动申请Basic License,X-pack 的免费Auth和Node间的SSL。

1.创建三个Elasticsearch7.10的节点

在一个服务器上,创建三个节点。解压文件,复制一个es-slave01和es-slave02,其中一个命名为master节点,好区分。
Elasticsearch7.10 开发中配置伪集群的TLS和身份验证(基础)

2.配置TLS和身份验证文件

在安全的集群中,Elastic节点在与其他节点通信时使用证书来标识自己。这个集群必须验证这些证书的真实性。推荐的方法
是信任指定的CA身份认证文件,因此,当节点加入到集群中时,它只需都拥有相同的CA签署的证书,

这里第一步是生成证书,然后把证书分发到子节点(好区分),其中一个命名为master节点。

在这个过程中,我们需要证书让节点安全的通信,会用到elasticsearch-certutil 的命令,此命令可以很快的生成证书。

流程:

ca证书--》根据ca证书,生成node证书--》复制node证书到其他节点--》生成用户密码

1.master主节点生成node证书

官网配置Node节点认证

  1. 在config目录下
[~choleen config]mkdir certs
  1. 在linux系统中,cd 进入elastic的bin目录下,这个可以不启动执行,运行此命令
[~choleen bin]./elasticsearch-certutil cert -out elastic-certificates.p12 -pass ""

对于这个命令elasticsearch-certutil ,可以输入--help来查看帮助,我们来看它给解释:
Elasticsearch7.10 开发中配置伪集群的TLS和身份验证(基础)

命令 含义
elasticsearch-certutil --help
cert 生成X.509的证书和密码
ca 生成一个新本地认证文件,里面包含了证书和密钥
csr 生成证书签名
http 对于这个Elastcsearch的http接口生成一个新的认证
cert --help
ca 指向已经生成的ca密钥文件
ca-cert 指向存在的ca认证文件(节点之间认证)
dns 指定DNS域名
ip 指定ip
pass 生成的私钥密码
out 指定生成文件路径
name 证书名字

执行之后,在根目录生成了elastic-certificates.p12 文件。

$ cd config
$ mkdir certs
$ mv ../elastic-certificates.p12 certs/
  1. 配置elasticsearch.yml
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

这里的verification_mode配置方式:

  • full,认证证书是否通过信任的CA证书签发,同时认证server的hostname 或者 IP 地址是否匹配证书中配置的
  • cretificate,只认证证书是否通过信任的CA证书签发的
  • none,什么也不认证,相当于关闭了SSL/TLS认证,仅用于你非常相信的安全的环境
  1. 启动master节点,生成集群密码
$ bin/ elasticsearch-setup-passwords interactive

手动设置密码,elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user,都有这些用户。

登录时会用到。

  1. Elastic节点配置TLS
    由于不是后台运行,打开一个新的终端,拷贝node证书(cert文件)到字节的的config/certs目录下。

    节点中node.master: false,不能为true。

    在其他节点中增加,就是xpck.security.*键设置为master一样。
$ echo "xpack.security.enabled: true" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.enabled: true" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.verification_mode: certificate" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12" >> elasticsearch.yml
  1. 运行其他两个节点,
$ bin/elasticsearch

最后看其他两个节点加入进去没有。

  1. Kibana中设置安全
elasticsearch.username: "kibana"
elasticsearch.password: "admin123"

运行命令 bin/kibana --allow-root

打开浏览器,输入 http://localhost:5601

这里的密码,我们可以使用elastic超级用户进行登录,就是来自setup-password 命令。

Elasticsearch7.10 开发中配置伪集群的TLS和身份验证(基础)

  1. Kibana中可以设置Role和User
  • role
    Elasticsearch7.10 开发中配置伪集群的TLS和身份验证(基础)

  • user
    Elasticsearch7.10 开发中配置伪集群的TLS和身份验证(基础)

先生成证书

  1. 执行命令 $ bin/elasticsearch-certutil ca -v
    • 其中
Please enter the desired output file [elastic-stack-ca.p12]:  # 输入保存的ca文件名称
Enter password for elastic-stack-ca.p12 : # 输入证书密码,我们这里留空
  1. 在生成node证书时,使用$ bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    • 其中
Enter password for CA (elastic-stack-ca.p12) :  # 输入CA证书的密码,我们这里没有设置,直接回车
Please enter the desired output file [elastic-certificates.p12]:  # 输入证书保存名称,保值默认直接回车
Enter password for elastic-certificates.p12 :  # 输入证书的密码,留空,直接回车

这种根据CA证书签署生成的node证书elastic-certificates.p12,包含有node证书、CA证书、私钥

3. 查看节点命令

  1. 查看节点信息
$ curl localhost:9200/_cat/nodes?v
  1. 查看节点状态
$ curl localhost:9200/_cat/health
  1. 查看每台机器的属性
$ curl localhost:9200/_cat/nodeattrs
上一篇:【spark】elasticsearch自签证书,spark进行读写


下一篇:javascript-angular js中的$scopes