我正在尝试通过TLS设置RethinkDB群集。我看到很多例子和博客,但没有描述生产环境。所有这些都使用自签名证书,并部署在本地主机或暴露于公共互联网的主机上。
但是我想使用在OpenStack上运行的专用网络。因此,所有主机(在OpenStack上称为实例)都具有私有IP。为了测试这个设置,我创建了2个实例(运行Ubuntu 16.04 LTS)并在它们上面安装了RethinkDB。
根据this RethinkDB页面,我必须为每台服务器提供密钥,签名证书和ca证书文件。每个证书都必须指定其CN(公用名),并且必须是主机名或主机IP。 IP是私有的,即(192.168.0。*)
为了做到这一点,我使用说明here创建了我自己的CA。为主机A创建了一个密钥文件,为主机B创建了一个密钥文件,并使用我自己创建的中间CA对其进行了签名。检查了所有证书,所有证书都回来了。由相同的CA正确签名。
所以现在我获得了主机A的私钥+公共证书,CN设置为主机A的IP,主机B也是如此。
我在两台服务器上安装了密钥,证书和中级CA证书,并在RethinkDB配置文件中指定了它们。我还将群集端口绑定到相应的IP。 rethinkdb用户可以访问所有密钥和证书文件。
主机A conf文件中的重要行
initial-password=MY_PASSWORD
bind-cluster=192.168.0.3
cluster-tls-key=/etc/ssl/private/rethinkdbA.key.pem
cluster-tls-cert=/etc/ssl/certs/rethinkdbA.cert.pem
cluster-tls-ca=/etc/ssl/certs/rethink-ca.pem
主机B conf文件中的重要行
initial-password=auto
bind-cluster=192.168.0.4
cluster-tls-key=/etc/ssl/private/rethinkdbB.key.pem
cluster-tls-cert=/etc/ssl/certs/rethinkdbB.cert.pem
cluster-tls-ca=/etc/ssl/certs/rethink-ca.pem
join=192.168.0.3:29015
然后我在主机A上启动RethinkDB。我检查了最后给我的日志文件
2017-09-22T15:29:35.854921950 0.265890s notice: Server ready, "hosta_jll" 7ae511e3-2295-4882-a23b-99de9751708e
然后我在主机B上启动RethinkDB。我检查其末尾读取的日志文件:
2017-09-22T13:12:39.647368542 0.135787s notice: Listening for intracluster connections on port 29015
2017-09-22T13:12:39.647465611 0.135884s info: Attempting connection to 1 peer...
主机A上的日志文件填满:
2017-09-22T13:12:40.647465611 46.922271s error: Cluster server connection TLS handshake failed: certificate verify failed (OpenSSL error 336105606)
所以我开始在这个OpenSSL错误336105606上寻找任何东西,但一无所获!正如我上面所说:我找不到任何示例/博客/操作方法/帮助页面,它向我展示了如何在生产环境中执行此操作。只有具有自签名证书的本地网络和开发环境。
当我从其运行的conf文件中删除cluster-tls- *行时,服务器形成一个集群。但是TLS没有运气。
所以我的问题是(是):错误代码是什么意思?我究竟做错了什么?甚至有必要在私有OpenStack网络中使用加密,虽然提到here这是一个好习惯吗?
过了几天......需要帮助!
非常感谢Marc
答案 0 :(得分:0)
嗨马克我有同样的问题。请检查您的证书中的X509v3 Extended Key Usage:
TLS Web Server Authentication
。
如果你这样的话:
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
那个问题。
有效输出为:
openssl s_client -connect rethink-server1:31015 -key ./certs/r2-key.pem -cert ./certs/r2-cert.pem -CAfile ./certs/ca.pem -servername rethink-server2 | openssl x509 -text -noout
如何检查
oBinding.filter(oFilter, sap.ui.model.FilterType.Application);