2013-10-29 66 views
1

我已经尝试了几种方法来获得一些由CouchDB使用的PEM文件。我已经使用powershell生成了一个证书,使用key将其导出为pfx,然后使用openssl将其转换为2个pem文件并将它们安装在Couch中。有了这种方法,它似乎在IE11中工作,但它不适用于Firefox或其他浏览器。火狐会产生这个错误:CouchDB SSL CRT到PEM文件

The key does not support the requested operation. (Error code: sec_error_invalid_key)

我也得到了来自ssl.com免费SSL证书,(他们给了我三个CRT文件),并尝试使用OpenSSL的转换,但都无济于事。

我也按照CouchDB页面上的说明生成一个专门用于此目的的自签名证书,但它不会加载该页面。 (http://docs.couchdb.com/en/latest/config/http.html#config-ssl左右下降)

有没有人有过这方面的成功?我如何将我的证书变成一种可以和沙发很好玩的格式,并且可以浏览所有浏览器?

UPDATE: 现在我得到这个错误

A PKCS #11 module returned CKR_DEVICE_ERROR, indicating that a problem has occurred with the token or slot.

不知道这是一步前进或后退......

+0

是否将一个反向代理放在CouchDB之前?然后它可以处理HTTPS,并且您不必在CouchDB中处理它:http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy –

+1

我可能最终编写了一个nodejs中间件,但如果这样做会很好。正如沙发在他们的网页上说的那样,它应该是* easy *。 : -/ – skinneejoe

+0

我有同样的问题。在Ubuntu 13.10上使用CouchDB 1.4。虽然使用不安全标志(-k),但Curl工作正常。 – Costa

回答

0

seems像CouchDB的版本早于1.7或1.6无法拥有为证书验证指定的中间证书。由于您正在撰写关于收到三个.crt文件的文件,因此可能需要这些文件作为中间证书。 CouchDB不知道他们可能是你的问题的原因。

显然,解决此问题的一种方法是连接证书文件和中间证书文件。只要cat在一起喜欢

$ cat yours.crt theirs.crt > couchdb.crt 

...和使用CouchDB的certfile配置选项指向couchdb.crt的位置。 如果你喜欢转换.CRT首先为.pem,使用某物像

$ openssl openssl x509 -in yours.crt -inform der -outform pem -out yours.pem 

在一个新的版本不够,你也许可以通过设置CouchDB的cacertfile选择使用中间证书。有关更多信息,请参阅this