我正在尝试使用 td-agent 在两台机器之间设置加密日志。我按照 fluentd 官方文档中的示例进行操作,但我陷入了一个非常奇怪的境地。由于 shared_key 不匹配,客户端和服务器拒绝协商。
两个服务器上的关键词都是正确的,但是客户端和服务器都指出密钥不匹配。
以下是客户端配置(省略文本):
<match uwsgi.**>
type copy
<store>
type secure_forward
shared_key hello
send_timeout 30s
self_hostname client.example.net
<server>
name server.example.net
host server.example.net
port 24225
</server>
</store>
</match>
以下是服务器配置:
<source>
type secure_forward
shared_key hello
self_hostname server.example.net
bind 0.0.0.0
port 24225
secure true
ca_cert_path /etc/td-agent/mycert.crt
ca_private_key_path /etc/td-agent/mykey.key
ca_private_key_passphrase ""
我不断从服务器收到这些错误消息:
Shared key mismatch from 'client.example.net'
客户也一样:
[warn]: dead connection found: server.example.net, reconnecting...
[warn]: connection refused to server.example.net:authentication failed: shared_key mismatch
有任何想法吗?
答案1
事实证明,td-agent的secure_forward插件有不同的版本。
更详细地说,相关插件的最新版本 (0.4.5) 使用“nonce”对密码进行“加盐”,而之前的版本则没有。因此,一个密码最终会得到不同的 SHA 和。
两个解决方案:
1. 更新两端的 secure_forward 插件
2. 删除代码中的摘要过程。
答案2
<match uwsgi.**>
type copy
<store>
type secure_forward
send_timeout 30s
self_hostname client.example.net
<server>
shared_key hello # put the same shared key
name server.example.net
host server.example.net
port 24225
</server>
</store>
</match>