如何使用 node.js 请求模块使用我自己的证书进行 SSL 调用?

2024-05-11

我正在使用 node.js 和此请求模块对另一台服务器进行 HTTP 调用。

https://github.com/mikeal/request https://github.com/mikeal/request

效果很好。我现在需要修改此代码以使用我公司的 SSL 证书通过 SSL 进行调用。在请求模块的文档中,它提到了 strictSSL 选项:

“strictSSL - 设置为 true 以要求 SSL 证书有效。注意:要使用您自己的证书颁发机构,您需要指定使用该 ca 创建的代理作为选项。”

这听起来像是我需要做的,但我不理解这句话:“指定使用该 ca 作为选项创建的代理。”。

1) “代理人”是什么意思? 2)如何“指定代理人” 3) 如何“以该 ca 作为选项”创建代理?

代码示例会很棒,但任何线索都会有所帮助。谢谢。


这主要阐述了彼得·莱昂斯的回答 https://stackoverflow.com/a/15255239/1080564,提供一个例子。

我假设您正在请求一个通过 HTTPS 运行的域,其证书由以下人员签名your own证书颁发机构 (ca)。

当使用请求库 https://github.com/mikeal/request,正如您所做的那样,不需要自己实际实例化代理,您只需提供一些agentOptions根据您提出的要求。下面是一个例子:

request({
  method: "POST",
  uri: "https://localhost/entries",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    name: "someEntry"
  }),
  agentOptions: {
    ca: fs.readFileSync("certs/ca.cert.pem")
  }
}, function(error, httpResponse, body) {
  //handle response
});

这里重要的是agentOptions,您提供 ca 的证书。现在接受所有使用 ca 签名的证书的域。想象一下一个caCA1已签署三个域名,D1, D2, D3。将 ca 设置为CA1结果允许对所有域的请求D1, D2, D3(但不是D4由不同的 ca 签署)。

要点是:"certs/ca.cert.pem"必须是签名证书颁发机构的证书。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 node.js 请求模块使用我自己的证书进行 SSL 调用? 的相关文章

随机推荐