UNABLE_TO_GET_ISSUER_CERT_LOCALLY 调用 Coinbase NODEJS 时出错 API

UNABLE_TO_GET_ISSUER_CERT_LOCALLY error when calling the Coinbase NODEJS API

从昨天 5:30 下午(巴黎时间)开始,我在尝试列出我的帐户时收到 UNABLE_TO_GET_ISSUER_CERT_LOCALLY。 我正在使用 nodejs 库,几个月以来它一直运行良好。

client.getAccounts 的确切错误是:

{ Error: unable to get local issuer certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1142:34)
    at TLSSocket.emit (events.js:188:13)
    at TLSSocket._finishInit (_tls_wrap.js:631:8) code: 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY' }

编辑:我刚刚尝试使用 Python API 进行相同的调用,并且工作正常。 所以我觉得 Coinbase NodeJS 当前存在问题 API.

根据 Coinbase,他们在太平洋标准时间昨天上午 10 点 30 分更新了他们的证书。节点客户端将 strictSSL 设置为 true,因此请求将因证书链失败而失败。

修复:启动客户端时,您可以将 strictSSL 设置为 false 或传入新的有效证书。

将 strictSSL 设置为 false:

var Client = require('coinbase').Client;
var client = new Client({
   apiKey: mykey, 
   apiSecret: mysecret,
   strictSSL: false
});

更新证书文件(您应该可以在此处导出它们 - https://baltimore-cybertrust-root.chain-demos.digicert.com/ 或尝试 coinbase.com 并在此处导出):

var Client = require('coinbase').Client;
var client = new Client({
   apiKey: mykey, 
   apiSecret: mysecret,
   caFile: myNewCertFile
});

myNewCertFiles 应遵循此文件格式和更新的证书:https://github.com/coinbase/coinbase-node/blob/master/lib/CoinbaseCertStore.js

"What are the security risks (if any) associated with setting strictSSL to false? How do you "export" the new SSL certificates?"

连接是加密的,TLS 防止篡改,但是 strictSSL 设置为 false 理论上可以进行 MITM(中间人)攻击,因为 SSL 证书不是经过全面检查以确保它是真实的,一些 hoser(中间的人)可能使用假证书。我会切换它开始,但尽快获得新证书。