JavaScript XMLHttpRequest:忽略无效的SSL证书。

16

我一直在尝试从一个通过https接口连接的设备中获取信息,但由于其具有无效的安全证书而遇到了麻烦。我知道该设备是可信的,但我无法访问服务器端,因此无法更改它。我想知道是否有办法在JavaScript中设置XMLHttpRequest对象,使其忽略无效的SSL证书并继续获取信息。目前,似乎只会拒绝证书并停止。谢谢。


1
如果有人在尝试在Node中解决同样的问题(而不是在浏览器中),可以跳转到以下链接获取解决方案:https://dev59.com/aWgv5IYBdhLWcg3wCsc8 - user993683
我给你点了个赞。糟糕 - 我不小心双击了赞,现在我不能再投票了。 - Chris Parker
3个回答

7

我之前找到了这个解决方案,但它没有起作用,因为我仍在使用实际的XMLHttpRequest。当使用以下语句创建它时:

httpreq = new ActiveXObject("Msxml2.ServerXMLHTTP.3.0");

今日免费次数已满, 请开通会员/明日再来
httpreq.setOption(2, 13056);

有了这些参数,请求现在会忽略无效的证书并获取信息。如果我理解正确,这将无法与任何非 Microsoft 技术尝试运行脚本的情况下工作,但对于我的项目范围来说,这没问题。


4

不,没有。XMLHTTPRequest不允许您覆盖它。在您的情况下能够覆盖SSL安全性可能是有意义的,但是如果您仔细想想,这通常是一个坏主意。您永远不希望允许互联网上的任意JavaScript代码连接到浏览器知道存在潜在中间人攻击问题的被认为是安全的服务。


是的,我知道在一般情况下这似乎没有意义,但大多数情况下通常会有特定情况需要考虑。实际上,我认为目前我正在找到一些东西。 - user535617
这个理由相当奇怪。如果是关于安全性的问题,那么XMLHTTPRequest应该支持指定自定义证书颁发机构以实现适当的安全性。相反,它们支持不安全的HTTP,不使用任何证书,容易受到中间人攻击。 - Ark-kun

4

我知道这个设备是可信的

但你不知道你是否真正连接到了这个设备。

这就是证书的目的。这就是为什么它必须有效。


1
@user535617 不,你只是认为你直接连接了,直接是关键词。可能存在一个中间人,仅仅转发你和终端节点之间的所有请求,同时收集所有信息。这对你来说是完全透明的。也就是说,你甚至不知道它的存在。 - chacham15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接