elasticsearch之search-guard安装

来源:互联网 发布:python高级编程第3版 编辑:程序博客网 时间:2024/05/18 17:01

elasticsearch 版本基于2.3.4


1.安装

bin/plugin install -b com.floragunn/search-guard-ssl/2.3.4.21

bin/plugin install -b com.floragunn/search-guard-2/2.3.4.12

2.生成证书文件
  下载对应版本的search guard-ssl源码
  cd search-guard-sshl/example-pki-scripts

  gen_client_node_cert.sh  创建客户端证书

  gen_node_cert.sh           创建节点证书

  gen_root_ca.sh               创建根证书

 进入example-pki-scripts/etc目录,里面是证书生成时的一些配置文件,可根据需要修改相应的信息

 root-ca.conf            根证书配置

 signing-ca.conf        签名证书配置

demo:
0.domainComponent       = "www.test.com”    域名
1.domainComponent       = "www.test.com"    域名
organizationName        = "Test"            组织名称
organizationalUnitName  = "Test Root CA"        组织单位名称
commonName              = "Test Root CA"        通用名称

生成证书

  cd search-guard-ssl/example-pki-scripts修改example.sh文件
如下:
#!/bin/bash

set -e
./clean.sh
./gen_root_ca.sh 123456 123456
./gen_node_cert.sh 0 123456 123456
./gen_node_cert.sh 1 123456 123456
./gen_node_cert.sh 2 123456 123456
./gen_client_node_cert.sh test 123456 123456

参数说明:

./gen_root_ca.sh 12345678 12345678

第一个参数为CA_PASS,即CA密码(根证书密码)

第二个参数为TS_PASS,即TS密码(truststore,信任证书密码)

./gen_node_cert.sh 0 12345678 12345678

第一个参数为node编号,生成证书后的文件名为node-0*

第二个参数为KS_PASS(keystore文件密码)

第三个参数为CA_PASS

./gen_client_node_cert.sh test 12345678

第一个参数为客户端节点名称,生成证书后的文件名为test*

第二个参数为KS_PASS

第三个参数为CA_PASS

运行example.sh会在该目录生成各种证书文件

3.配置证书
1.证书上传到elasticsearch

将example-pki-scripts文件夹中的node-0-keystore.jks和truststore.jks复制到elasticsearch的配置目录中(/etc/elasticsearch)

cp node-0-keystore.jks /etc/elasticsearch

cp truststore.jks /etc/elasticsearch

将example-pki-scripts文件夹中的test-keystore.jks和truststore.jks复制到elasticsearch程序目录下的plugins/search-guard-2/sgconfig下,如果这个节点是主节点,则所有节点的search guard配置都从这个节点中配置,然后分发到其它节点中

cp test-keystore.jks /usr/share/elasticsearch/plugins/search-guard-2/sgconfig/

cp truststore.jks /usr/share/elasticsearch/plugins/search-guard-2/sgconfig/


2.修改elasticsearch配置文件:

vim /etc/elasticsearch/elasticsearch.yml

修改以下配置:

17  cluster.name: test

23  node.name: node-0

54  network.host: 0.0.0.0

# search-guard配置

# 配置ssl

 searchguard.ssl.transport.enabled: true

 searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks

 searchguard.ssl.transport.keystore_password: 12345678

 searchguard.ssl.transport.truststore_filepath: truststore.jks

 searchguard.ssl.transport.truststore_password: 12345678

 searchguard.ssl.transport.enforce_hostname_verification: false

 searchguard.ssl.transport.resolve_hostname: false

 

# 配置http

# http配置,这里我只是为了测试方便,配置完,应该设置为true

 searchguard.ssl.http.enabled: false

 searchguard.ssl.http.keystore_filepath: node-0-keystore.jks

 searchguard.ssl.http.keystore_password: 12345678

 searchguard.ssl.http.truststore_filepath: truststore.jks

 searchguard.ssl.http.truststore_password: 12345678


 searchguard.allow_all_from_loopback: true

 

# 这里注意,下面的配置一定要和签的客户端证书一致,否则不能插入配置

 searchguard.authcz.admin_dn:

 - CN=test, OU=client, O=client, L=Test, C=DE

3.配置完后重启elasticsearch


四、将配置写入运行中的elasticsearch

进入到elasticsearch安装目录中

cd /usr/share/elasticsearch/

运行如下命令将配置写入到elasticsearch中:

./plugins/search-guard-2/tools/sgadmin.sh -cn 集群名称 -h hostname -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/admin-keystore.jks -kspass password -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass password -nhnv

hostname:指的是elasticsearch的elasticsearch.yml配置文件中 network.host 设置的值

根据上面的配置,输入的命令如下:

./plugins/search-guard-2/tools/sgadmin.sh -cn test -h 0.0.0.0 -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass 12345678 -nhnv







原创粉丝点击