javascript - 我可以查明用户的网络浏览器是否存储了我的自签名 ssl 证书的异常吗?

标签 javascript security ssl browser https

是否有可能找出,例如在 javascript 中,如果浏览器存储了自签名 ssl 证书的安全异常?

我想向用户提供一条消息,告诉他们在尝试导航到通过 https 提供的页面之前会收到安全警告以及证书详细信息,但我只想将该消息提供给以下用户:将收到安全警告,即没有为我的安全证书存储异常的用户。
(该站点是为一个新的非营利性非法人协会创建的,因此即使有预算也可能很难获得 CA 证书。)

最佳答案

I want to provide a message to users telling them to expect the security warning and what the certificate details will be BEFORE they try to navigate to a page being served over https, but I only want to give that message to users who are going to get the security warning, i.e. users who have not stored the exception for my security certificate.

我认为这是个坏主意。 如果您训练用户相信此类消息,中间人攻击者很容易只显示类似的警告,然后使用攻击者证书进行中间人 SSL 攻击。

(The site is for a new non-profit unincorporated association so it may be difficult to get a CA certificate even if there were a budget for one.)

首先,有一种免费的 SSL 证书(他们可能不对证书收费,但对吊销收费)。除此之外,如果您只是将它与服务器成本或几杯咖啡进行比较,那么一个简单的证书并没有那么昂贵。 如果你真的想保护你的用户,你不应该使用某种损坏的 HTTPS,而是正确地使用它。

Is it possible to find out, e.g. in javascript, if a browser has stored a security exception for a self-signed ssl certificate?

虽然我认为显示这样的警告是个坏主意,但可以在类似情况下使用以下技术,即向用户表明它需要更新其旧软件,因为它不能接受更新的证书:

您可以尝试包含来自 https 保护端的图像等资源。如果资源证书失败,现代浏览器(我已经用最近的 Chrome 和 Firefox 测试过)不会显示警告,而是静默加载失败。您可以使用 Javascript 检查资源是否已加载(用户对证书有异常(exception))或没有(无异常(exception))。

关于javascript - 我可以查明用户的网络浏览器是否存储了我的自签名 ssl 证书的异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30617962/

相关文章:

javascript - 如何发送表格 i ionic 框架

javascript - webdriver.io 异步问题 - 单击一个元素,然后输入文本

javascript - 使用 Google Cloud Speech-to-text 时出现空错误

amazon-web-services - 来自 AWS API 网关的 "Unable to validate certificate chain"(RapidSSL 证书)

ssl - CURLINFO_SSL_VERIFYRESULT 设置的值是什么意思?

javascript - 更改文本字符串的值

security - 为什么Yesod session cookie不能被劫持?

php - 将 JSON 和 HTML 安全地提供给 JavaScript

java - 完全禁用 Java 安全机制?

php - 如何将 .htaccess 域从 http 重定向到 https。在任何线程中都找不到对我有用的东西