我一直在关注 these instructions在 Windows 上运行的 CouchDB 实例上启用 ssl。 我正在使用通过
生成的 self 认证的 .pem 证书和 keyopenssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
使用 curl -k https://127.0.0.1:6984/
效果很好,但 Chrome 和 Firefox 的 react 不同:
- Firefox 首先让我为自签名证书添加一个安全异常(exception),然后抛出一个
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
我需要从浏览器访问,因为这是一个网络应用程序。我的 key 和证书生成是否正确?
最佳答案
找到解决方案
邮件列表hinted Erlang 中的 SSL 实现可能存在缺陷。
根据他们的建议,我正在使用 stunnel作为 CouchDB 前面的 SSL 隧道。客户端通过 HTTPS 连接到 Stunnel,Stunnel 通过 HTTP 与 CouchDB 通信,但由于两者都在同一台机器上,所以应该没问题。
stunnel 在安装时生成自己的证书,必须将其(对于 Chrome/Win7)添加为受信任的根证书颁发机构。此外,只有当您实际退出菜单并重新启动时,Chrome 才会考虑新证书 - 关闭窗口并不总是如此。
关于security - CouchDB over HTTPS 和自认证证书 : browsers reject it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30939983/