5

这可以用 JavaScript 或 PHP 实现吗?我希望能够检测我的私有 CA 是否安装在用户的 iOS 或 Android 设备上。从那里我可以决定是否提供安装说明。我一直在“googlin”并且没有发现任何有用的东西。有没有人试过这个?我想知道我应该花时间学习什么。如果不可能,您能否建议一个浏览器替代方案?

编辑:我在这里没有选择,这不是我的决定。出于其他安全原因,将使用私有 CA 证书。

4

2 回答 2

7

我怀疑会有任何类型的设备查询来测试这一点。

我实际上并没有这样做,但您可能会想出一个测试,其中 JavaScript 向使用您要测试的证书的 https 服务器发出 AJAX 请求。如果请求成功,则证书正在工作。(这个问题似乎暗示如果 SSL 证书不验证,AJAX 请求将(正确)失败)

请注意,由于 URL 的方案(http 或 https)会有所不同(域可能取决于您的设置方式),因此您的测试站点必须使用CORS Access-Control-Allow-Origin标头来允许浏览器发出请求。请参阅:对不受信任(自签名)HTTPS 的 AJAX 调用以静默方式失败

编辑:我有时间整理了一个非常简单的例子。转到http://ssl_test.gjp.cc。该页面将尝试向使用自签名证书的https://ssl_test2.gjp.cc发出 AJAX 请求。在您信任之前ssl_test2,您会在页面上看到“Failed” ssl_test,但是一旦您信任 的证书ssl_test2,您应该总是在 上看到“Success” ssl_test

请注意,这并不能证明您的用户已安装 CA 证书 - 仅证明他们已将浏览器配置为信任测试站点 ( ssl_test2)。如果您从不直接将用户指向测试站点,那么他们将永远没有机会仅信任该站点,因此这应该可以正常工作。

于 2013-08-27T19:20:15.487 回答
1

也许会有所帮助:

<img src="https://the_site/the_image" onerror="redirectToCertPage()" />
于 2013-09-11T08:07:33.187 回答