繁体   English   中英

在节点中安装自定义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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM