【发布时间】:2017-01-24 15:56:47
【问题描述】:
这是我第一次使用 Java Key Store,我遇到了一些困难。我有ServerA 将日志发送到ServerB。我能够建立一个不安全的http 通信来传输日志。但是,当合并JKS 以使用https 建立安全通信时,ServerB 似乎没有收到任何内容。两台服务器如何使用JKS 进行安全通信?
以下是我目前的设置方式:
在ServerA 中创建密钥库:
在ServerA在Keystore中生成自签名证书
keytool -genkey \
-alias jkstest \
-keyalg RSA \
-validity 365 \
-keystore /apps/logstash/jkstest.jks
-keysize 2048
在ServerA提取证书
keytool -export \
-rfc -alias jkstest \
-keystore /apps/logstash/jkstest.jks \
-file /apps/logstash/jkstest.crt
-storepass somepass
从ServerA复制密钥库到ServerB
scp /apps/logstash/jkstest.jks username@serverb.com:/apps/logstash/jkstest.jks
我正在使用logstash 将日志从ServerA 发送到ServerB。这是一个非常简单的下载和安装应用程序。关键/重要的部分是在使用 JKS 的配置中:
ServerAconfig.conf
input {
file {
path => "/var/log/apache2/error.log"
start_position => beginning
}
}
output {
stdout { codec => rubydebug { metadata => true } }
http {
http_method => "post"
codec => "json_lines"
url => "https://serverb.com:5000/"
ssl_certificate_validation => true
cacert => "/apps/logstash/jkstest.crt"
}
}
ServerBconfig.conf
input {
http {
port => 5000
codec => json
ssl => true
keystore => "/apps/logstash/jkstest.jks"
keystore_password => "hardt0gu355"
}
}
output {
stdout { codec => rubydebug { metadata => true } }
}
开始发送和接收日志:
ServerA启动logstash
bin/logstash agent -f config.conf -l logstash.log
ServerB启动logstash
bin/logstash agent -f config.conf -l logstash.log
【问题讨论】:
-
尝试使用
ssl_certificate_validation => false,因为它是自签名证书,可能无法完全验证。 -
我已经很久没有做这些了,但是由于您使用的是自签名证书,您将无法将其作为“受信任的证书链”导入并链接它到预先打包的受信任的证书颁发机构之一。那么,要让另一台服务器信任,它可能必须在两端手动导入为受信任的证书?
-
@djangofan 我不确定我是否做了类似的事情,但其他服务器仍然没有收到任何东西。你能测试一下你的方法是否仍然有效吗?
-
也许这提供了另一个提示。我真的不能再添加更多了:stackoverflow.com/questions/23227849/…
标签: https logstash logstash-configuration jks