![](/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.