在DB群集连接TLS握手期间,OpenSSL错误336105606意味着什么

在DB群集连接TLS握手期间,OpenSSL错误336105606意味着什么,ssl,rethinkdb,Ssl,Rethinkdb,我正在尝试通过TLS设置一个DB集群。我看到很多例子和博客,但没有一个描述生产环境。所有这些都使用自签名证书,并部署在本地主机或暴露于公共internet的主机上 但是,我想使用在OpenStack上运行的专用网络。因此,所有主机(称为OpenStack上的实例)都有一个私有IP。为了测试这个设置,我创建了两个实例(运行Ubuntu16.04LTS)并在它们上面安装了RejectionDB 根据数据库页面,我必须为每台服务器提供一个密钥、签名证书和ca证书文件。每个证书都必须指定其CN(公共名称

我正在尝试通过TLS设置一个DB集群。我看到很多例子和博客,但没有一个描述生产环境。所有这些都使用自签名证书,并部署在本地主机或暴露于公共internet的主机上

但是,我想使用在OpenStack上运行的专用网络。因此,所有主机(称为OpenStack上的实例)都有一个私有IP。为了测试这个设置,我创建了两个实例(运行Ubuntu16.04LTS)并在它们上面安装了RejectionDB

根据数据库页面,我必须为每台服务器提供一个密钥、签名证书和ca证书文件。每个证书都必须指定其CN(公共名称),该CN必须是主机名或主机的IP。IP是私有的,即(192.168.0.*)

为此,我使用说明创建了自己的CA。为主机a创建了一个密钥文件,为主机B创建了一个密钥文件,并使用自己创建的中间CA对其进行签名。检查了所有证书,所有证书都恢复正常。这些证书由同一CA正确签署

现在我得到了主机a的私钥+公共证书,CN设置为主机a的IP,主机B也是如此

我在两台服务器上安装了密钥、证书和中间CA证书,并在DB conf文件中指定了它们。我还将集群端口绑定到相应的IP。数据库用户可以访问所有密钥和证书文件

主机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
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
主机B 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
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上启动数据库。我检查最后给我的日志文件

2017-09-22T15:29:35.854921950 0.265890s notice: Server ready, "hosta_jll" 7ae511e3-2295-4882-a23b-99de9751708e
然后我在主机B上启动RejectionDB。我检查它的日志文件,该文件的末尾显示:

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文件中删除集群tls-*行时,服务器形成一个集群。但是TLS没有运气

所以我的问题是:错误代码是什么意思?我做错了什么?尽管有人提到加密是一种很好的做法,但在私有OpenStack网络中是否有必要使用加密呢

几天后……需要帮助


非常感谢,Marc,你好,Marc,我也有同样的问题。请在您的证书中检查
X509v3扩展密钥用法
。 如果您有这样的smth:

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

嗨,马克,我也有同样的问题。请在您的证书中检查
X509v3扩展密钥用法
。 如果您有这样的smth:

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