gpt4 book ai didi

node.js - 使用 ssl 保护来自 Node 的服务调用

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:07 25 4
gpt4 key购买 nike

我正在尝试确保从我的 Node 到其他服务的服务调用安全。所有其他服务都启用了 https。我尝试了以下方法

  1. process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'

根据我的理解,它忽略了所有因证书而从代码中删除的错误

  1. 我正在使用 request 模块。我们可以在哪里配置

    key - 提供我的私钥文件,

    cert - 提供我的证书文件

    ca - 证书授权链

    然后它抛出 UNABLE_TO_VERIFY_LEAF_SIGNATURE

我发现 Node 没有从系统中读取 ca。它有自己的 ca 链所以我包括了 node-ssl-root-cas从互联网上获取最新的 cas。

然后使用 ssl-analyser,我发现我的域没有中间 ca 证书

我从我们的 ca 下载了它并制作了一个 ca 链并将其附加到 ssl-root-cas

然后就可以成功发起请求了

但即使我从请求中删除 key 和证书,我也能够发出请求并获得结果。

我如何检查我的请求和响应实际上是否已加密?

或者 Node 只是忽略错误,

最佳答案

仅供引用,如果您不提供自己的“ca”属性,Node 将使用系统上安装的证书授权。当您提供自己的时,将忽略系统的。这是设计使然,因为提供您自己的 CA 可能意味着您希望信任由您自己的 CA 签名的证书。如果您不使用自己的 CA,则可以跳过设置“ca”属性。如果是,那么我不确定您为什么还需要提供通常受信任的 CA 的完整列表。这似乎是一个非常奇怪的用例。

您可以使用 https 模块发出请求,而无需提供您自己的 key 和证书。这是预期和记录的行为。由于技术原因,在发出任何 https 请求时,更具体地说,打开任何 TLS 套接字时,客户端还需要有私钥和证书。在默认情况下,服务器不会以任何方式验证客户端,因此浏览器使用通常称为“snakeoil”证书的东西 - 一种捆绑的自签名证书。

在执行 https 请求时提供您自己的 key 和证书的用例是当服务器启用客户端证书检查时。例如,当连接到 Apple 的服务器以向 iOS 发送推送消息时,您拥有 Apple 颁发的客户端证书,Apple 的服务器使用该证书来验证您是否有权发送推送消息(该证书由 Apple 颁发)以及您是哪个应用程序发送到(证书的指纹/校验和)。

除非您访问的 https 服务需要特定的客户端证书,否则您最好不要设置“ key ”和“证书”——没有真正的理由这样做。

因此,总而言之,您可以跳过设置所有三个 key 、证书和 ca,因为真正的问题似乎是您配置错误的服务器(它不为 CA 链提供服务)。

关于node.js - 使用 ssl 保护来自 Node 的服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com