ssl - 在服务器端检测不受信任的 SSL 访问?

标签 ssl server-side trusted-vs-untrusted

问题

有没有办法检测访问者是否信任 SSL 连接/证书?我真的在网上或 stackoverflow 上找不到任何东西。我认为这是一个非常不常见的问题。

一个用例

我正在使用来自 StartSSL 的证书。它适用于大多数常见和现代浏览器。但是在我使用 IE 的 Windows Phone 上,我收到了警告。这是因为默认情况下,Windows Phone 上的 IE 无法识别根证书。

解决方案很简单:只需下载证书 - 点击两次。我想为普通访客提供一个关于如何做到这一点的小指南。但是,只有遇到问题的访问者才能收到消息。

最佳答案

如果不信任您的证书,通过 HTTPS 连接到您网站的访问者将无法访问您的网站。添加异常(exception)后,您无法确定它是普遍可信还是异常(exception)。

也许您可以尝试构建用户代理列表并猜测它们的默认 CA 应该是什么,以便能够在这种情况下显示附加消息。这不是一个完美的规则(因为您永远无法完全控制客户端信任的内容,这是用户/管理员的责任),并且具有用户代理特定内容的缺点;特别是,它不一定可靠,您不会拥有完整的数据库,并且已经添加异常(exception)或永久导入证书的用户会看到此附加消息(除非您使用 cookie 之类的东西来记住)。

如果您的初始页面是通过纯 HTTP 传输的,您可以尝试向您的 HTTPS 站点发出 XHR 请求并报告它是否有效。 (您可能需要考虑同源策略。)

关于ssl - 在服务器端检测不受信任的 SSL 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12535823/

相关文章:

java - 如何修复 CWE 829 - 包含来自不受信任的控制领域的功能

python - Python 中的 openssl_csr_get_public_key

c# - WCFTestClient 通过禁用 TLS 1.0 和 TLS 1.1 给出错误消息

android - C2DM 的设备注册 ID 会过期吗?

java - 嵌入 Java 服务器应用程序的脚本语言

javascript - 客户端和服务器端编程有什么区别?

sql - postgres 中 SQL 以外的语言

python - 执行可能不友好的 python 代码的沙箱

java - java的cacerts格式应该是什么格式?

Heroku 上的 SSL 证书