如何为 CouchDB 配置 SSL

如何为 CouchDB 配置 SSL

如何配置 Couchdb 以使用 SSL,我已按照说明进行操作这里但没有成功。

我生成自己的自签名证书:

mkdir cert && cd cert
openssl genrsa > privkey.pem
openssl req -new -x509 -key privkey.pem -out mycert.pem -days 1095

我取消注释了/usr/local/etc/couchdb/local.ini

httpsd = {couch_httpd, start_link, [https]}

并指出我的证书

cert_file = /usr/local/etc/couchdb/certs/mycert.pem
key_file = /usr/local/etc/couchdb/certs/privkey.pem

但当我尝试测试它时

curl -k -v https://127.0.0.1:6984
* About to connect() to 127.0.0.1 port 6984 (#0)
*   Trying 127.0.0.1... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to 127.0.0.1:6984 
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to 127.0.0.1:6984 

我真的不知道哪里出了问题。

笔记

我按照说明从源代码安装了 Couchdb 1.2这里

答案1

因此我执行了以下命令:

# openssl genrsa -out localhost.key 2048

# openssl req -new -x509 -key localhost.key -out localhost.crt -days 3650 -subj /CN=localhost

之后,我按如下方式配置 local.ini:(确保 Couchdb 用户可以访问这些证书文件):

[daemons]
httpsd = {couch_httpd, start_link, [https]}

[ssl]
cert_file = /opt/couchdb/etc/cert/localhost.crt
key_file = /opt/couchdb/etc/cert/localhost.key

当我在我的电脑上运行此命令时,它运行正常:

curl -v -k https://localhost:6984/

答案2

我基本上因为同样的问题而抓狂,但在 RHEL6 上使用 CouchDB 1.6.1。

浏览无数的邮件列表后,我意识到,很可能是 Erlang SSL 库中存在“未识别”的问题,导致了这次静默失败。

我的解决方法(对我来说确实有效)是使用隧道

  • 下载/安装
  • 像以前一样创建你的证书

以下是 stunnel 的草稿设置,假设您有一个使用开放 SSL 自签名的密钥/crt 对:

fips = no

[couchdb]
accept = 6984
key = [path to your key file]
cert = [path to your cert file]
connect = 127.0.0.1:5984

请注意,stunnel 正在抱怨我本地与 FIPS 相关的事情,所以我最终禁用了它以快速获得满足,因此有了这条fips = no线。

相关内容