Javascript:使用证书调用 API

p2018

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

p2018

随着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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章