如何配置 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
线。