目的
この記事では、Elastic Stack内のコンポーネント間でTLS、HTTPクライアント通信を暗号化する手順を纏めます。
1.Elasticsearchの設定手順
まずは、操作しやすいように環境変数を設定します。これは必須ではないです。
## bashrcを編集
vim ~/.bashrc
## 以下を追記
ES_HOME=/usr/share/elasticsearch
ES_PATH_CONF=/etc/elasticsearch
## bashrcを反映
. ~/.bashrc
Elasticsearchのホームディレクトリ配下で、証明書類を更新します。
cd $ES_HOME
bin/elasticsearch-certutil cert ca --pem
certificate-bundle.zipが生成されるので解凍します。
unzip certificate-bundle.zip -d
証明書類を/etc/elasticsearch/certs配下に配置します。
#certsディレクトリをElasticsearchを作成
cd $ES_PATH_CONF
mkdir certs
pwd
/etc/elasticsearch/certs
#/etc/elasticsearch/certs配下に配置
ca.crt instance.crt instance.key
elasticsearch.ymlを編集します。
xpack.security.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.key: certs/instance.key
xpack.security.http.ssl.certificate: certs/instance.crt
xpack.security.http.ssl.certificate_authorities: certs/ca.crt
xpack.security.transport.ssl.key: certs/instance.key
xpack.security.transport.ssl.certificate: certs/instance.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca.crt
xpack.security.http.ssl.verification_mode: certificate
内蔵のユーザーパスワードを設定します。
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
あとはリスタートすればOkです。一応、HTTPS経由で_cat/nodes APIにアクセスできるかどうかも以下コマンドで確認できます。
curl -k --cacert /tmp/cert_blog/certs/ca/ca.crt -u elastic 'https://localhost:9200/_cat/nodes?v'
Enter host password for user 'elastic':
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
X.X.X.X 53 97 26 2.90 2.40 2.33 dilmrt * master
2.Kibanaの設定手順
まずは、操作しやすいように環境変数を設定します。これは必須ではないです。
## bashrcを編集
vim ~/.bashrc
## 以下を追記
KIBANA_HOME=/usr/share/kibana
KIBANA_PATH_CONFIG=/etc/kibana
## bashrcを反映
. ~/.bashrc
証明書類を/etc/kibana/config/certs配下に配置します。
Elasticsearchで生成した証明書と同じものを配置します。
#certsディレクトリをElasticsearchを作成
cd $KIBANA_PATH_CONFIG
mkdir -p /etc/kibana/config/certs
pwd
/etc/kibana/config/certs
#//etc/kibana/config/certs配下に配置
ca.crt instance.crt instance.key
kibna.ymlを編集します。
xpack.security.enabled: true
## httpsになっていることに注意です。
elasticsearch.hosts: ["https://node1.elastic.test.com:9200"]
elasticsearch.username: "kibana"
elasticsearch.password: "password"
server.ssl.certificate: /etc/kibana/config/certs/instance.crt
server.ssl.key: /etc/kibana/config/certs/instance.key
elasticsearch.ssl.certificateAuthorities: [ "/etc/kibana/config/certs/ca.crt" ]
## 今回のやり方だとfalseにしないとエラーがでます。
elasticsearch.ssl.verificationMode: none
あとはリスタートすればOkです。
3.Logstashの設定手順
証明書類を/etc/logstash/config/certs配下に配置します。
Elasticsearchで生成した証明書と同じものを配置します。
pwd
/etc/logstash/config/certs
ls -ll
total 12
-rw-r--r-- 1 root root 1200 Mar 23 02:47 ca.crt
-rw-r--r-- 1 root root 1147 Mar 23 02:47 instance.crt
-rw-r--r-- 1 root root 1675 Mar 23 02:47 instance.key
logstash.ymlを編集します。
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: password
## httpsになっていることに注意です。
xpack.monitoring.elasticsearch.hosts: [ 'https://node1.elastic.test.com:9200' ]
xpack.monitoring.elasticsearch.ssl.certificate_authority: "/etc/logstash/config/certs/ca.crt"
xpack.monitoring.elasticsearch.ssl.verification_mode: none
あとはリスタートすればOkです。confでElasticsearch Output Pluginを使用する場合は以下のようにHTTPSでアクセスするための設定を入れます。
output{
elasticsearch {
## httpsになっていることに注意です。
hosts => ["https://node1.elastic.test.com:9200"]
user => "elastic"
password => "password"
ssl => true
## 今回のやり方だとfalseにしないとエラーがでます。
ssl_certificate_verification => false
cacert => "/etc/logstash/config/certs/ca.crt"
}
}