Beats:如何在 Elastic Stack 中得到并使用 Root CA Certificate fingerprint

2022年11月10日   |   by mebius

在我之前的很多文章中,我基本上使用的 CA 证书来进行配置的。在很多其它的场合,我们可以使用 fingerprint 来进行连接。那么我们该如何得到并使用这个证书呢?

我们先安装之前的教程 “Elastic Stack 8.0 安装 – 保护你的 Elastic Stack 现在比以往任何时候都简单” 来安装好 Elasticsearch。我们可以在如下的安装目录中找到所有的证书信息:

$ pwd
/Users/liuxg/test/elasticsearch-8.4.3
$ ./bin/elasticsearch-keystore list
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
xpack.security.transport.ssl.truststore.secure_password
$ ./bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
6ngKg4CZTYW0k_qM1hmZvtgcodew
$ cd config/certs/
$ ls
http.p12      http_ca.crt   transport.p12
$ keytool -keystore http.p12 -list
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains tgcode2 entries

http, Oct 9, 2022, PrivateKeyEntry, 
Certificate fingerprint (SHA-256): 27:FD:E0:B7:29:D3:74:73:D3:17:D4:90:EC:96:92:24:05:3E:88:71:CF:2B:1D:46:3D:D4:3F:3D:B1:A6:9A:08
http_ca, Oct 9, 2022, PrivateKeyEntry, 
Certificate fingerprint (SHA-256): CC:F0:AA:AF:B9:45:4E:0A:6E:AC:8D:BA:4B:22:56:8B:B3:0C:C9:D2:C0:ED:4F:40:E2:74:8A:3E:C1:A7:AD:B2

%title插图%num

如上所示,我们可以发现 CA 证书的 fingerprint。事实上,我们也可以直接从 http_ca.crt 文件了提前到这个 fingerprint:

openssl x509 -fingerprint -sha256 -noout -in http_ca.crt
$ openssl x509 -fingerprint -sha256 -noout -in http_ca.crt
sha256 Fingerprint=CC:F0:AA:AF:B9:45:4E:0A:6E:AC:8D:BA:4B:22:56:8B:B3:0C:C9:D2:C0:ED:4F:40:E2:74:8A:3E:C1:A7:AD:B2

上面也显示了这个 fingerprint。但是在实际的使用中,这个带有 : 符号的字符串,并不能直接使用。我们可以使用如下的命令来进行提取:

macOS

 openssl x509 -in http_ca.crt -shtgcodea256 -fingerprint | grep sha256 | sed 's/://g'
$ openssl x509 -in http_ca.crt -sha256 -fingerprint | grep sha256 | sed 's/://g'
sha256 Fingerprint=CCF0AAAFB9454E0A6EAC8DBA4B22568BB30CC9D2C0ED4F40E2748A3EC1A7ADB2

Linux OS

openssl x509 -in http_ca.crt -sha256 -fingerprint | grep SHA256 | sed 's/://g'

一旦得到这个 fingerprint,我们可以在 Beats 里进行如下的配置:

filebeat.yml

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]

  # Protocol - either `http` (default) or `https`.
  protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"
  password: "6bTlJp388KkgJKWi+hQr"
  ssl.ca_trusted_fingerprint: "CCF0AAAFB9454E0A6EAC8DBA4B22568BB30CC9D2C0ED4F40E2748A3EC1A7ADB2"

在上面,我们配置 output.elasticsearch 部分。你们需要根据自己的配置进行相应的修改。保存好 filebeat.yml 文件,我们可以来进行测试:

$ pwd
/Users/liuxg/test/filebeat-8.4.3-darwin-aarch64
$ vi filebeat.yml 
$ ./filebeat test output
elasticsearch: https://localhost:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: ::1, 127.0.0.1
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.3
    dial up... OK
  talk to server... OK
  version: 8.4.3

从上面的输出中我们可以看出来我们的配置是成功的。

文章来源于互联网:Beats:如何在 Elastic Stack 中得到并使用 Root CA Certificate fingerprint

相关推荐: Elasticsearch:Bucket script 聚合

Bucket script 聚合是一个父管道(parent pipeline)聚合,它执行一个脚本,该脚本可以对父多桶聚合中的指定指标执行每个桶的计算。 指定的指标必须是数字,并且脚本必须返回一个数值。有关 pipeline 聚合的内容,你可以阅读文章 “El…

Tags: , ,