Filebeat:证书由未知机构签名

7

我从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 重试者:向消费者发送未等待信号

INFO [publish] pipeline/retry.go:191 完成

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

INFO [publish] pipeline/retry.go:168 完成

然而,elasticsearch 使用了由Let's Encrypt签发的有效SSL证书。(证书不是自签名的)

Filebeat kubernetes配置:

output.elasticsearch:
  hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']
  username: ${ELASTICSEARCH_USERNAME}
  password: ${ELASTICSEARCH_PASSWORD}

我尝试在配置文件中添加这些参数,它可以正常工作。但是,即使证书有效,为什么我仍然需要绕过验证呢?

ssl.verification_mode: "none"

我假设您的实际域名不是example.com? 您的elasticsearch容器是否具有适当的受信任根CA列表? 它基于哪个映像? - johnharris85
抱歉,我之前所写的是elasticsearch,实际上应该是filebeat。您的filebeat容器是否具备正确的根CA证书?另外,请从您的filebeat容器中获取证书,并使用openssl进行检查,以确保您获得了正确的证书。 - johnharris85
@johnharris85:Filebeat没有ssl配置。我正在使用这个配置文件:https://raw.githubusercontent.com/elastic/beats/7.0/deploy/kubernetes/filebeat-kubernetes.yaml - RNK
即使证书有效,如果证书有效,则无需绕过验证模式,您需要向容器传授有关您认为有效的证书根的知识;它们中的大多数具有过时的CA链,通常不包括Let's Encrypt根之类的内容。因此,我原则上同意您的观点:不要关闭SSL验证,请更新容器中的CA列表以正确无误。 - mdaniel
在我的情况下,我必须为TLS配置设置完整的证书链。 - Nash
显示剩余3条评论
1个回答

2
原因可能是旧的默认操作系统信任库不包含您的有效和知名的受信任CA链,或者Elasticsearch证书是自签名或由私有CA签名的。
您可以选择以下几种解决方案:
1. 在已更新默认信任库的环境(服务器、容器等)中运行您的filebeat,该信任库知道签署您的证书的CA——例如:升级到较新版本的操作系统或更新的容器镜像。 2. 删除您的 ssl.verification_mode: "none" 配置,并添加一个 ssl.certificate_authorities 指向一个或多个PEM文件,这些文件包含要被信任的CA证书。
 output.elasticsearch:
   hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']
   username: ${ELASTICSEARCH_USERNAME}
   password: ${ELASTICSEARCH_PASSWORD}
   ssl.certificate_authorities: ["/path/to/ca.pem"]
  1. 移除你的ssl.verification_mode: "none"配置,并在YAML配置中添加一个ssl.certificate_authorities配置,直接嵌入要信任的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-----

免责声明: 您没有提供filebeat版本,因此我假设您使用的是最新版本。尽管如此,这种配置在filebeat的不同版本中可能是相同的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接