簡體   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