我必须使用提供给我们的证书(.cert和.pem文件)使用“ sync-request”节点模块进行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是我用Google搜索并尝试包含的内容。
注意:我不想使用NODE_TLS_REJECT_UNAUTHORIZED = 0
答案 0 :(得分: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'
});