TLS/SSLは、公開鍵インフラストラクチャを使用しています。認証が必要なサービスには、公開鍵と秘密鍵が必要です。もう1つのエンドポイント(サービスを検証する)は、公開鍵(またはCA証明書だけが良い - 公開鍵)を必要とします。デフォルトでTLS/SSLを使用する場合、クライアントが接続する 'サーバー'のみが認証されます。このシナリオでは、ビートはクライアントで、Logstashはサーバーです。
さらに、サーバーはクライアントに(証明書を使用して)認証を要求することができます。この方法はクライアント認証と呼ばれ、サーバー(Logstash)で明示的に有効にする必要があります。 client-authを有効にすると、クライアントには証明書と秘密鍵も必要です。+サーバーはクライアントを確認/認証するために証明書(またはCA証明書)を必要とします。
とにかく、client-authを使用する場合、各クライアントには一致するIP /ドメイン名のクライアント証明書が必要です。 Plus Logstashは、検証のためにCAの公開証明書のみを持つべきです。これは、適切なCAインフラストラクチャを持つことに至ります。
エンドポイント/マシンの秘密鍵を別のマシンと共有しないでください。
各メトリック・ビート・エージェントに秘密鍵を配布するのは悪い習慣ですか?
実際にはそうです。
秘密鍵にパスワードが必要ですか?キーを使用できるようにsomewhere the passphraseとして
可能はい(秘密鍵を暗号化する必要があるとして)、これは最も可能性の高いアクセスを難読化した場合
は、設定する必要があります。それでも、鍵を暗号化すると、鍵が盗まれた場合に多少の損害を減らすことができます。ビートの設定は以下のように(少なくとも)である必要があり、クライアントの認証では
output.logstash:
hosts: ["host.url:5044"]
ssl.certificate_authorities:
- /host/certs/logstash-beats.crt
:
クライアント認証なしでビートの設定は次のように(少なくとも)である必要があり、私は推測する
output.logstash:
hosts: ["host.url:5044"]
ssl.certificate_authorities:
- /host/certs/logstash-beats.crt
ssl.certificate: "/host/certs/reporter.crt"
ssl.key: "/host/certs/reporter-private.key"
ssl.key_passphrase: ...
、filebeatがありすでに認証構成。 https://www.elastic.co/guide/en/beats/filebeat/current/configuration-output-ssl.html何か逃したことがありますか? – hkulekci
@steffensは非常に深遠な答えを出しました:https://discuss.elastic.co/t/why-does-filebeat-only-need-cert-and-metricbeat-need-key-ca-and-cert/104214/4 – gotjosh