基于HTTPS的CouchDB和自我认证的证书:浏览器拒绝它

时间:2015-06-19 13:56:11

标签: security ssl https couchdb

我一直关注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的反应不同:

  • Firefox首先让我为自签名证书添加安全例外,然后抛出sec_error_invalid_key
  • Chrome只会抛出ERR_SSL_PROTOCOL_ERROR。我尝试手动将我的证书添加到Chrome,结果相同。

在被拒绝的连接上,Erlang控制台显示:

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

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

2 个答案:

答案 0 :(得分:3)

找到解决方案

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

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

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

答案 1 :(得分:1)

我与CouchDB和自己生成的证书有完全相同的问题。 我放弃了它。

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

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

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

祝你好运,请在解决时回复:)我也想了解自己。