Filebeat:由未知机构签署的证书

Ron*_*tel 7 ssl elasticsearch kubernetes filebeat

我从 filebeat 收到此错误:

无法连接到 backoff(elasticsearch( https://elk.example.com:9200 )): 获取https://elk.example.com:9200 : x509: 由未知机构签名的证书

INFO pipeline/output.go:93 尝试重新连接到 backoff(elasticsearch( https://elk.example.com:9200 )) 并进行 1468 次重新连接尝试

INFO [publish] pipeline/retry.go:189 重试器:向消费者发送取消等待信号

信息 [发布] pipeline/retry.go:191 已完成

INFO [publish] pipeline/retry.go:166 重试器:向消费者发送等待信号

信息 [发布] pipeline/retry.go:168 已完成

然而,elasticsearch 通过 LetsEncrypt 拥有有效的 SSL。(这不是自签名证书)。

Filebeat kubernetes 配置:

output.elasticsearch:
  hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']
  username: ${ELASTICSEARCH_USERNAME}
  password: ${ELASTICSEARCH_PASSWORD}
Run Code Online (Sandbox Code Playgroud)

我尝试在配置文件中添加这些参数并且它有效。但是,为什么即使证书有效,我也需要绕过验证。

ssl.verification_mode: "none"
Run Code Online (Sandbox Code Playgroud)

Ale*_*uma 2

原因是旧的默认操作系统信任库不具备非常有效且众所周知的可信 CA 链,或者 Elasticsearch 证书是自签名或由私有 CA 签名。

您可以从多种解决方案中进行选择:

  1. 在具有更新的默认信任库的环境(服务器、容器等)中运行 filebeat,该信任库知道签署您的证书的 CA - 即:升级到较新版本的操作系统或更新的容器映像。

  2. 删除您的配置并使用受信任的 CA 证书向一个或多个 PEM 文件ssl.verification_mode: "none"添加一个点。ssl.certificate_authorities

 output.elasticsearch:
   hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']
   username: ${ELASTICSEARCH_USERNAME}
   password: ${ELASTICSEARCH_PASSWORD}
   ssl.certificate_authorities: ["/path/to/ca.pem"]
Run Code Online (Sandbox Code Playgroud)
  1. 删除您的ssl.verification_mode: "none"配置并ssl.certificate_authorities直接在 YAML 配置中添加包含嵌入的受信任 CA 证书的配置。

filebeat 配置文档中的示例。

certificate_authorities:
  - |
    -----BEGIN CERTIFICATE-----
    MIIDCjCCAfKgAwIBAgITJ706Mu2wJlKckpIvkWxEHvEyijANBgkqhkiG9w0BAQsF
    ADAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwIBcNMTkwNzIyMTkyOTA0WhgPMjExOTA2
    MjgxOTI5MDRaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
    BQADggEPADCCAQoCggEBANce58Y/JykI58iyOXpxGfw0/gMvF0hUQAcUrSMxEO6n
    fZRA49b4OV4SwWmA3395uL2eB2NB8y8qdQ9muXUdPBWE4l9rMZ6gmfu90N5B5uEl
    94NcfBfYOKi1fJQ9i7WKhTjlRkMCgBkWPkUokvBZFRt8RtF7zI77BSEorHGQCk9t
    /D7BS0GJyfVEhftbWcFEAG3VRcoMhF7kUzYwp+qESoriFRYLeDWv68ZOvG7eoWnP
    PsvZStEVEimjvK5NSESEQa9xWyJOmlOKXhkdymtcUd/nXnx6UTCFgnkgzSdTWV41
    CI6B6aJ9svCTI2QuoIq2HxX/ix7OvW1huVmcyHVxyUECAwEAAaNTMFEwHQYDVR0O
    BBYEFPwN1OceFGm9v6ux8G+DZ3TUDYxqMB8GA1UdIwQYMBaAFPwN1OceFGm9v6ux
    8G+DZ3TUDYxqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAG5D
    874A4YI7YUwOVsVAdbWtgp1d0zKcPRR+r2OdSbTAV5/gcS3jgBJ3i1BN34JuDVFw
    3DeJSYT3nxy2Y56lLnxDeF8CUTUtVQx3CuGkRg1ouGAHpO/6OqOhwLLorEmxi7tA
    H2O8mtT0poX5AnOAhzVy7QW0D/k4WaoLyckM5hUa6RtvgvLxOwA0U+VGurCDoctu
    8F4QOgTAWyh8EZIwaKCliFRSynDpv3JTUwtfZkxo6K6nce1RhCWFAsMvDZL8Dgc0
    yvgJ38BRsFOtkRuAGSf6ZUwTO8JJRRIFnpUzXflAnGivK9M13D5GEQMmIl6U9Pvk
    sxSmbIUfc2SGJGCJD4I=
    -----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

免责声明:您尚未提供 filebeat 版本,因此我假设是最新版本。尽管如此,这种配置在各个 filebeat 版本中可能都是相同的。