检测不安全的 ssl 连接

Detect unsecure ssl-Connection

我们是 运行 一个使用自签名 ssl 证书的 Intranet 应用程序。

客户确实信任我们的CA。

我们多年来一直在使用这种方式。

在某些 PC 上,我们的 CA 未导入,用户每天都会收到来自浏览器的警告。

不幸的是,用户并没有告诉我们这些,他们只是一遍又一遍地说 "accept cert"。

有没有办法检测页面的信任度?

我们是 运行 网络应用程序,如果浏览器确实手动接受证书,我们希望收到一条通知。然后我们可以联系PC的管理员并向他发送一个PC不信任我们的CA的提示。

也许可以这样检测JavaScript?

这很好:

如果它看起来像这样,我们希望得到一条注释:

更新客户端PC我不负责。我无权访问它们来安装或管理证书。

信息未通过Javascript公开(参考Is there a way to get SSL certificate details using JavaScript?)。

根据情况,您可以:

1) 使用组策略将您的 CA 部署到所有 PC
2) 使用其他管理软件部署CA
3) 使用实际可信的证书颁发机构(通过购买证书或使用 Let's Encrypt)

这是一个非详尽的列表,所以如果您有更多关于您的环境的信息,我可以提供其他选项。

这是可能的,但是 browser support 目前不是很高。 如果你可以忍受除了基于铬的浏览器和 firefox(这些确实构成了大多数用户代理)之外的任何东西,你可以使用

window.isSecureContext

查明浏览器是否信任您的证书。 因此,为了在每次有人不信任您的证书时进行记录,您可以这样做:

if (!window.isSecureContext){
    //do ajax call
}