Javascript:使用证书进行API调用

时间:2019-07-12 10:22:08

标签: javascript node.js request node-modules

我必须使用提供给我们的证书(.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

1 个答案:

答案 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'
});