首页 > 解决方案 > 使用 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,它工作。我可以停在那里,但不知怎的,我知道出了点问题。

标签: node.jshttpsssl-certificatecouchdblets-encrypt

解决方案


经过更多的挖掘,我终于发现,尽管CouchDB使用的cert_file包括服务器证书和中间证书,但与其他一些服务器不同,CouchDB本身只会发回服务器证书。为了以正确的方式解决此问题,我还需要将中间证书指定为local.ini文件中的cacert_file 。一旦我这样做了,错误就消失了。


推荐阅读