我在云 (AWS) 中的 Ubuntu 12.10 服务器上运行 Apache CouchDB 实例(版本 1.3.0)。我正在尝试让 SSL 在我的 couchDB 实例上工作。
基本的 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
我还确保这些文件的所有权是正确的。
这工作正常,couchDB 服务器启动,您可以毫无问题地导航到https://mycouchdbserver.com/_utils/。
使用 openssl 进行测试
openssl s_client -showcerts -connect mycouchdbserver.com:443
给出标准 SSL 配置的正确结果
在 DigiCert 网站上测试设置时(购买 SSL 证书的公司 - 测试链接:http ://www.digicert.com/help/ )我收到以下错误:
服务器未发送所需的中间证书。
购买 SSL 证书时,我从 DigiCert 获得了中间证书,并且还下载了 DigiCert 的根证书。
在 couchDB 的 local.ini 配置文件中,您可以将它们与以下配置字段一起使用:
verify_ssl_certificates = true
cacert_file = xxxx
我的问题是我无法让它工作,并尝试了所有可能的组合来让它工作。这是我尝试过的:
- 尝试将 cacert_file 设置为来自 DigiCert 的中间证书
- 尝试将 cacert_file 设置为 /etc/ssl/certs 中的根证书
- 尝试将 DigiCert 网站的根证书添加到 /usr/shared/ca-certs/ 然后运行 dpkg-reconfigure ca-certificates 以安装新的根证书并将 cacert_file 设置为 /etc/ssl/certs 中的新 pem 编码证书
- 尝试将证书和中间证书组合在一个用于 cert_file 的文件中
- 尝试将证书、中间证书和根证书组合到 1 个用于 cert_file 的 pem 文件中
以上所有内容都会在 couchDB 日志中引发错误。有些人在错误日志中提供大量输出,但使用数字 3,我得到
=ERROR REPORT==== 11-Jun-2013::11:35:30 ===
SSL: hello: ssl_handshake.erl:252:Fatal error: internal error
并用 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:
有没有人知道如何正确使用 verify_ssl_certificates、根证书和中间证书与 couchDB
我已在线阅读所有文档,但没有任何帮助
在此先感谢安德鲁