无法使用管理员和自签名 SSL 证书复制 CouchDB 数据库
Posted
技术标签:
【中文标题】无法使用管理员和自签名 SSL 证书复制 CouchDB 数据库【英文标题】:Not able to replicate CouchDB databases with admin and self signed SSL certificate 【发布时间】:2018-05-02 13:31:00 【问题描述】:我的本地和远程 CouchDB SSL 服务器配置
cert_file /etc/couchdb/cert/couchdb.pem
key_file /etc/couchdb/cert/privkey.pem
port 6984
ssl_certificate_max_depth 1
verify_ssl_certificates false
每当我像这样在本地沙发数据库的 _replicator 数据库中创建文档时
"_id": "181361e45e43f9363612b9dec1005a78",
"_rev": "6-87e9881fd3fecb26e906bb38b8e00a2f",
"source": "https://adminname:pass@localhostName:6984/DatabaseFromReplicate/",
"target": "https://adminname:pass@remotehostName:6984/DatabaseToReplicate/",
"continuous": true,
"owner": "Admin Name"
我的文档被修改为
"_id": "181361e45e43f9363612b9dec1005a78",
"_rev": "7-87e9881fd3fecb26e906bb38b8e00a2f",
"source": "https://adminname:pass@localhostName:6984/DatabaseFromReplicate/",
"target": "https://adminname:pass@remotehostName:6984/DatabaseToReplicate/",
"continuous": true,
"owner": "Admin Name",
"_replication_state": "error",
"_replication_state_time": "2018-05-02T07:23:07-06:00",
"_replication_state_reason": "timeout",
"_replication_id": "f236397473a906778fd8edbe63dbe59d"
DatabaseFromReplicate 存在于本地 couchDb 中,DatabaseToReplicate 存在于远程 couchDb 中
我的 CouchDB 日志显示:
由于错误 conn_failed,error,closed 在 0.25 秒内重试 HEAD 请求到 https://admin:*****@remotehost:6984/DatabaseToReplicate/
更新: 如果在 _replicator 数据库目标键值中创建的文档从 https 更改为 http,端口号从 6984 更改为 5984,则复制在我的远程数据库中的 https 上使用 6984 端口开始,这是为什么。
我的本地和远程 couchdb 配置:
For replicator
connection_timeout 30000
db _replicator
http_connections 20
max_replication_retry_count 10
retries_per_request 10
socket_options [keepalive, true, nodelay, false]
ssl_certificate_max_depth 3
verify_ssl_certificates false
worker_batch_size 500
worker_processes 4
For httpd
allow_jsonp false
authentication_handlers couch_httpd_oauth, oauth_authentication_handler, couch_httpd_auth, cookie_authentication_handler, couch_httpd_auth, default_authentication_handler
bind_address 0.0.0.0
default_handler couch_httpd_db, handle_request
enable_cors false
log_max_chunk_size 1000000
port 5984
secure_rewrites true
socket_options [recbuf, 262144, sndbuf, 262144]
vhost_global_handlers _utils, _uuids, _session, _oauth, _users
For couch_httpd_auth
allow_persistent_cookies false
auth_cache_size 50
authentication_db _users
authentication_redirect /_utils/session.html
iterations 10
require_valid_user true
secret ***************************
timeout 600
For couch_httpd_oauth
use_users_db false
For ssl
cert_file /etc/couchdb/cert/couchdb.pem
key_file /etc/couchdb/cert/privkey.pem
port 6984
ssl_certificate_max_depth 1
verify_ssl_certificates false
我的 _users 数据库只包含设计文档。
我的 couchDb 版本是 1.6.1
【问题讨论】:
【参考方案1】:在您放入/_replicator
的文档中,您有:
"source": "https://adminname:pass@host:6984/DatabaseFromReplicate/",
"target": "https://adminname:pass@host:6984/DatabaseToReplicate/",
对于source
和target
,您使用的是host
,不应该类似于localHost
用于source
和remoteHost
用于target
吗?我的意思是,它们不应该不同吗?
我不确定,也许这只是你的问题中的一个错字。
【讨论】:
是的,这是我的问题中的拼写错误,感谢您指出 @sykyck 我强烈建议使用 CouchDB 2.1.1,因为 1.6.1 版本有 security bugs 允许系统被利用 by bitcoin miners。 感谢您的信息以上是关于无法使用管理员和自签名 SSL 证书复制 CouchDB 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何连接 Python IMAP4_SSL 和自签名服务器 SSL 证书?
如何使用 Ionic Cordova 框架和自签名证书绕过 iOS 11 中的 SSL 检查