javascript - 检测是否在 javascript 中使用不受信任的 SSL 证书加载网页

标签 javascript html ssl https

有没有办法在 JavaScript 中检测网站是否使用浏览器不信任的 SSL 证书(但被用户接受)通过 HTTPS 加载? IE。它是无效/过期/自签名 SSL 证书。
window.isSecureContext不表示这个,是true在所有情况下,我都自己尝试过 badssl.com如果页面是通过 HTTPS 加载的。

我的用例:我正在尝试使用 ApplicationCache 但它拒绝工作:在 Chrome 上它会触发 error带有异常消息的回调 "Manifest fetch failed (9)" ,在 Firefox 上它会默默地失败。

由于这意味着浏览器的行为不同,我希望它是可检测的,并且我想确保在 ApplicationCache 无法使用时完全跳过它。

我不想从 JavaScript 创建单独的 SSL 连接(用户可能安装了自定义 CA 的证书等),也不想尝试使用 ApplicationCache 捕获异常。

最佳答案

无法通过不受信任的 SSL 证书加载网页。它可能会加载未公开信任但用户已明确添加异常的证书 - 这意味着用户信任该证书。

相反,您似乎想知道您的站点是否加载了与服务器提供的不同的证书,即客户端和服务器之间是否有一些活跃的人,例如 SSL 拦截公司代理或本地防病毒产品.为此,您需要了解证书详细信息并将其与您的期望进行比较。不幸的是,这在纯 Javascript 中是不可能的。

有关更多信息,请参阅 Within a web browser, is it possible for JavaScript to obtain information about the HTTPS Certificate being used for the current page? , Is there a way to get SSL certificate details using JavaScript? .有关在服务器端检测 MITM 的替代方法,请参阅 Detect man-in-the-middle on server side for HTTPSDetecting HTTPS Interception (with the caddy webserver) .

关于javascript - 检测是否在 javascript 中使用不受信任的 SSL 证书加载网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756537/

相关文章:

javascript - 在 Jquery 模板上,如何动态设置 css 类?

javascript - 正则表达式匹配多个带或不带空格的单词

javascript - 照片打开后如何在照片上放置链接?

ssl - 使用VS2015作为本地实例将开发ssl证书绑定(bind)到IP地址

iframe - 是否可以在另一个 HTTPS 域上的 iFrame 中使用不同的 HTTPS 域?

javascript - Vue 资源 - plugin.apply 不是函数

javascript - 在对象字面量中添加属性会产生 NaN

html - 动态内容 : How to adjust div's position automatically?

Javascript Canvas 动画(简笔画运动)

.net - RabbitMQ DotNet 客户端不连接到 SSL