node.js - 使用 Let's Encrypt 证书通过 HTTPS 访问 CouchDB 时,节点无法验证第一个证书
问题描述
我实际上已经找到了这个问题的答案,并且只想记录我的发现。
问题与使用Node.js通过HTTPS访问CouchDB有关。CouchDB服务器已经配置了Let's Encrypt生成的SSL证书。local.ini中指定的cert_file包含服务器证书和问题的中间证书。当我通过浏览器验证 URL 时,连接显示为有效。但是,每当我尝试从Node获取相同的 URL 时,都会抛出UNABLE_TO_VERIFY_LEAF_SIGNATURE / 无法验证第一个证书错误。
我尝试使用NODE_EXTRA_CA_CERTS环境变量将根证书添加到节点。那失败了。然后,我尝试将中间证书添加到NODE_EXTRA_CA_CERTS,它工作。我可以停在那里,但不知怎的,我知道出了点问题。
解决方案
经过更多的挖掘,我终于发现,尽管CouchDB使用的cert_file包括服务器证书和中间证书,但与其他一些服务器不同,CouchDB本身只会发回服务器证书。为了以正确的方式解决此问题,我还需要将中间证书指定为local.ini文件中的cacert_file 。一旦我这样做了,错误就消失了。
推荐阅读
- ruby-on-rails - session_store.rb cookie 密钥更改不会更改 cookie 名称
- nginx - nginx www vhost,不重定向到非 www https:// 站点
- android-studio - Android Studio 设备列表卡在 Loading... Mac
- ios -
- contact-form - 我无法建立联系表格,有人可以解释一下吗?
- python - 在 Python 中以 sympy 评估变量之前,是否有任何方法可以在表达式中显示变量的值?
- python - 三个 post 请求到同一个方法,如何只运行一次方法,将结果共享给他们三个?
- python-3.x - 24小时后如何删除某个角色?
- php - 我在站点根目录中没有 WordPress,并且希望通过单个 wordpress 安装实现两个子目录
- angularjs - AngularJS 中使用 $index 的嵌套循环(ng-repeat)