2013-10-29 121 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