![](/img/trans.png)
[英]Node.js error with SSL UNABLE_TO_VERIFY_LEAF_SIGNATURE
[英]Installing custom SSL certificate in Node (UNABLE_TO_VERIFY_LEAF_SIGNATURE)
我正在尝试访问API,但是出现以下错误:
{ FetchError: request to https://www.cryptopia.co.nz/api/GetMarkets failed, reason: unable to verify the first certificate
at ClientRequest.<anonymous> (.../node_modules/node-fetch/index.js:133:11)
at ClientRequest.emit (events.js:159:13)
at TLSSocket.socketErrorListener (_http_client.js:389:9)
at TLSSocket.emit (events.js:159:13)
at emitErrorNT (internal/streams/destroy.js:64:8)
at process._tickCallback (internal/process/next_tick.js:152:19)
name: 'FetchError',
message: 'request to https://www.cryptopia.co.nz/api/GetMarkets failed, reason: unable to verify the first certificate',
type: 'system',
errno: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }
我尝试使用ssl-root-cas
并尝试使用NODE_EXTRA_CA_CERTS
手动添加证书。 这些都不起作用。
该API用于加密货币交换。 我可以使用Chrome连接到它。 我使用了一些SSL扫描器,但显示“此服务器的证书链不完整”。 这是其中一台扫描仪的结果: https : //www.ssllabs.com/ssltest/analyze.html? d =www.cryptopia.co.nz
经过一段时间的Google搜索后,该错误似乎是由Node未下载中间证书引起的。 Chrome已下载它,因此Chrome可以正常工作。 我使用Chrome将证书下载为.cer
文件,然后使用OpenSSL将其转换为.pem
文件,然后使用Node的NODE_EXTRA_CA_CERTS
加载了NODE_EXTRA_CA_CERTS
,但是它没有做任何事情。
如何解决此问题?
我无法更改服务器。 我联系了Cryptopia,但可能要花几个星期才能回复。 显然,由于要处理金钱,因此我不会禁用严格的SSL。
您需要向应用程序提供整个CA链,即缺少的中间CA证书和根证书:
options=require('url').parse('https://www.cryptopia.co.nz/api/GetMarkets');
options.ca = require('fs').readFileSync('myca.pem');
require('https').get(options, (r) => {
console.log(r.headers)
});
myca.pem
是中间“ COMODO RSA扩展验证安全服务器CA”和根“ COMODO RSA证书颁发机构”的证书的PEM表示的串联。 我在这里以pastebin的形式提供了它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.