【问题标题】:How to disable SSL verification for any request?如何为任何请求禁用 SSL 验证?
【发布时间】:2018-12-12 05:02:21
【问题描述】:

我有一个 Node.JS 服务正在运行,我正在尝试从不同的系统进行连接。目前使用 POSTMAN 来测试服务。邮递员报错 - There was an error connecting to https://lddbbtx.wdf......./index.xsjs. 现在,我通过禁用 Postman 中的“SSL 证书验证”选项来重试该请求,它似乎有效。我可以收到服务的响应。

但在生产中,我们将使用 Recast.AI 连接到此服务。在 Recast 中,它们提供了一种为 GET/POST 请求设置标头的方法。所以,我想知道,有没有办法在请求的标头中禁用 SSL 验证?

【问题讨论】:

  • HTTP 标头与 SSL 验证无关。 SSL 位于 传输层,而 HTTP 位于 应用层
  • 那么,我需要在服务器端进行更改吗?
  • 您使用的 HTTP 客户端库可能具有禁用 SSL 验证的功能(不好的做法),或者您可以手动将 SSL 证书添加到受信任的证书列表中。
  • 在服务器端,您会介意使用有效的 SSL 证书。您可以使用Let's Encrypt免费获得一份。

标签: node.js api ssl postman


【解决方案1】:

...有没有办法在请求的标头中禁用 SSL 验证?

服务器证书的验证在客户端完成。它在 TLS 握手期间完成,因此在发送任何 HTTP 请求之前完成。服务器不能触发禁用验证,否则中间攻击者可以简单地指示受害者不要检查证书。

通常 - 禁用验证甚至部分验证(例如检查 URL 中的主机名是否与证书匹配)是一个非常糟糕的主意。在禁用证书验证的情况下,传输仍然是加密的,但客户端不会检查它是否确实与预期的服务器通信。通过这种方式,攻击者可以进行简单的中间人攻击来冒充服务器,从而嗅探并修改所有流量。

【讨论】:

  • 我的服务器正在使用 HTTPS 并按应有的方式发送所需的证书。但在客户端,它无法识别服务器,因此无法建立连接。为什么会这样?
  • @BoudhayanDev:在您的具体情况下,无法说出究竟是什么问题。但通常:服务器配置错误,服务器发送错误的证书或发送中间证书失败,客户端不信任服务器的根 CA(例如使用自签名证书或私有 CA),客户端使用的主机名客户端访问服务器的证书不匹配,服务器需要客户端使用SNI来告诉应该使用哪个证书但是客户端没有使用SNI。
  • 好的,所以我想我的问题与 SSL 无关。在这里,这 2 个系统位于 2 个不同的环境中。请求客户端位于公共服务器上,而服务托管在防火墙后面的私有服务器上。这就是它无法通信的原因。 POSTMAN 工作的原因可能是因为 postman 连接到内部网络。我尝试将 POSTMAN 连接到不同的网络,结果现在无法访问该服务。
猜你喜欢
  • 2010-11-22
  • 2021-12-02
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2016-07-27
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多