Apache couchDB CA签署了证书问题

And*_*Kew 5 apache ssl couchdb

我正在云(AWS)中的Ubuntu 12.10服务器上运行Apache CouchDB实例(版本1.3.0).我正在尝试在我的couchDB实例上运行SSL.

基本的SSL设置非常简单.我已将证书和密钥放在目录中,并在local.ini文件中取消注释以下行

httpsd = {couch_httpd, start_link, [https]}
cert_file = /usr/local/etc/couchdb/certs/mycouchdbserver_cert.pem
key_file = /usr/local/etc/couchdb/certs/mycouchdbserver_key.pem
Run Code Online (Sandbox Code Playgroud)

我还确保这些文件的所有权是正确的.

这很好,couchDB服务器启动,你可以导航到https://mycouchdbserver.com/_utils/没有问题.

使用openssl进行测试

openssl s_client -showcerts -connect mycouchdbserver.com:443
Run Code Online (Sandbox Code Playgroud)

为标准SSL配置提供正确的结果

在DigiCert网站上测试设置时(通过SSL证书购买的公司 - 测试链接:http://www.digicert.com/help/)我收到以下错误:

服务器未发送所需的中间证书.

购买SSL证书时,我从DigiCert获得了中间证书,并下载了DigiCert的根证书.

在couchDB的local.ini配置文件中,您可以将它们与以下配置字段一起使用:

verify_ssl_certificates = true
cacert_file = xxxx
Run Code Online (Sandbox Code Playgroud)

我的问题是,我无法让这个工作,并尝试了所有可能的组合,以使其工作.这是我尝试过的:

  1. 尝试将cacert_file设置为DigiCert的中间证书
  2. 尝试将cacert_file设置为/ etc/ssl/certs中的根证书
  3. 尝试将DigiCert网站的根证书添加到/ usr/shared/ca-certs /然后运行dpkg-reconfigure ca-certificates以安装新的根证书并将cacert_file设置为/ etc/ssl/certs中的新pem编码证书
  4. 尝试将cert和中间证书组合在一个用于cert_file的文件中
  5. 尝试将证书,中间证书和根证书组合到用于cert_file的1个pem文件中

所有上述内容都会在couchDB日志中引发错误.有些在错误日志中提供了大量的输出,但使用数字3,我得到了

=ERROR REPORT==== 11-Jun-2013::11:35:30 ===
SSL: hello: ssl_handshake.erl:252:Fatal error: internal error
Run Code Online (Sandbox Code Playgroud)

用openssl测试我得到了

CONNECTED(00000003)
16871:error:14094438:SSL routines:SSL3_READ_BYTES:tlsv1 alert internal    error:s3_pkt.c:1099:SSL alert number 80
16871:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何使用couchDB正确使用verify_ssl_certificates,根证书和中间证书

我在线阅读了所有文档,没有任何帮助

先谢谢安德鲁

And*_*Kew 4

对于任何感兴趣的人来说,这就是我们最终解决问题的方法:

似乎我们无法让 couchDB 使用我们的中间证书正常工作。

由于我们在 AWS EC2 实例上运行 couchDB 服务器,因此我刚刚创建了一个 ELB(弹性负载均衡器)实例并将我的证书上传到 ELB,然后将 EC2 实例添加到我的负载均衡器下,并将我的 DNS 重新路由到负载均衡器(此处也使用 Route53)。

然后,我在 couchDB 上完全关闭 SSL,并将 SSL 握手交给支持使用中间证书的负载均衡器。

这确实意味着 ELB 和 couchDB 之间的通信不安全,但对我们来说这很好。

这也意味着我们现在可以在 ELB 下添加更多 couchDB 服务器以实现可扩展性,从而实现 2 鸟 1 石头解决方案。

您也可以使用 Nginx 执行相同的解决方案,但添加和管理 ELB 既简单又稳定,因此我们采用了 ELB 解决方案。