我有一个包含证书捆绑包、Python脚本和Node脚本的目录。这两个脚本都向相同的URL发出GET请求,并提供相同的证书捆绑包。Python脚本按预期进行请求,但是node脚本会抛出以下错误:
节点脚本 (Node 4.2.6 和 request 库):
Python脚本(Python 3.4.3和requests库):{ [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }
import requests
print(requests.get(url, verify='/tmp/cert/cacert.pem'))
节点脚本 (Node 4.2.6 和 request 库):
var fs = require('fs');
var request = require('request');
request.get({
url: url,
agentOptions: {
ca: fs.readFileSync('/tmp/cert/cacert.pem')
}
}, function (error, response, body) {
if (error) {
console.log(error);
} else {
console.log(body);
}
});
两者使用相同的OpenSSL版本:
$ python -c 'import ssl; print(ssl.OPENSSL_VERSION)'
OpenSSL 1.0.2e-fips 3 Dec 2015
$ node -pe process.versions.openssl
1.0.2e
我不认为问题出在证书捆绑上,也不想在Node中关闭主机验证。
有人知道为什么Node会抛出这个错误吗?