CouchDB over HTTPS 和自认证证书:浏览器拒绝它

CouchDB over HTTPS and self-certified certificate : browsers reject it

我一直在关注 these instructions 在 Windows 上的 CouchDB 实例 运行 上启用 ssl。 我使用的是自我认证的 .pem 证书和使用

生成的密钥
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

使用 curl -k https://127.0.0.1:6984/ 效果很好,但 Chrome 和 Firefox 的反应不同:

对于被拒绝的连接,Erlang 控制台显示:

[error] [<0.15176.0>] SSL: certify: tls_connection.erl:2286:Fatal error: decode error

我需要从浏览器访问,因为这是一个网络应用程序。我的密钥和证书生成是否正确?

我在 CouchDB 和自生成证书方面遇到了完全相同的问题。 我已经放弃了。

但我可以建议你尝试一些事情:

如果您使用的是 CORS 并且您的主站点位于 http 上,则可能是问题所在。主站点上的 https 也可能不允许 CORS - Check here, nothing about https

尝试使用代理让所有流量都通过一个地址和端口。这可能会有所帮助 :) 如果您只直接使用 CouchDB,那么您可能遇到证书问题。

祝你好运,解决后请post回来:)我自己也想知道。

找到解决方案

Erlang 中的 SSL 实现可能存在缺陷的邮件列表hinted

根据他们的建议,我使用 stunnel 作为 CouchDB 前面的 SSL 隧道。客户端通过 HTTPS 连接到 stunnel,stunnel 通过 HTTP 与 CouchDB 通信,但由于两者都在同一台机器上,所以应该没问题。

stunnel 在安装时生成自己的证书,(对于 Chrome / Win7)必须添加为 受信任的根证书颁发机构 。此外,Chrome 仅在您实际 退出菜单 并重新启动时才会考虑新证书 - 关闭 window 并不总是如此。