我必须使用提供给我们的证书(.cert 和 .pem 文件)使用“同步请求”节点模块进行 API 调用。每当我尝试拨打电话时 - 它都会给出错误消息 - 无法验证第一个证书。
我曾尝试使用 agentOptions 或导入 'ssl-root-cas' 节点模块。但它给出了同样的上述错误。我不确定我是否正确传递了值。
let request = require('sync-request');
let crt_file = fs.readFileSync('someFilePath.cer', ascii);
let pem_file = fs.readFileSync('someFilePath.pem', ascii);
let apiUrl = 'http://localhost:8888/getDetails';
let agentOptions = {
maxCachedSessions: 0,
secureProtocol: 'TLSv1_2_method',
securityOptions: 'SSL_OP_NO_SSLv3',
ciphers: 'ALL',
key: crt_file,
cert: pem_file,
Passphrase: 'London1!'
}
let response = request('GET', apiUrl, agentOptions);
我想通过使用证书获得成功响应。上面的 agentOptions 是我在谷歌上搜索并试图包含的内容。
注意:我不想使用 NODE_TLS_REJECT_UNAUTHORIZED=0
随着request
节点模块被弃用,got
提供了很好的方法。这对我有用。
const got = require('got');
const crypto = require('crypto');
const OAuth = require('oauth-1.0a');
const oauth = OAuth({
consumer: {
key: process.env.CONSUMER_KEY,
secret: process.env.CONSUMER_SECRET
},
signature_method: 'HMAC-SHA1',
hash_function: (baseString, key) => crypto.createHmac('sha1', key).update(baseString).digest('base64')
});
const token = {
key: process.env.ACCESS_TOKEN,
secret: process.env.ACCESS_TOKEN_SECRET
};
const url = 'https://api.twitter.com/1.1/statuses/home_timeline.json';
got(url, {
headers: oauth.toHeader(oauth.authorize({url, method: 'GET'}, token)),
responseType: 'json'
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句