我们可以检测是否安装了根CA证书?

时间:2013-08-27 18:56:07

标签: php javascript cryptography certificate

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

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

2 个答案:

答案 0 :(得分:6)

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

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

请注意,由于URL的方案(http或https)会有所不同(可能是域名,具体取决于您如何设置),您的测试站点必须使用CORS {{1标头允许浏览器发出请求。请参阅:AJAX calls to untrusted (self-signed) HTTPS fail silently

编辑: 我有一些时间,并把一个非常简单的例子放在一起。转到http://ssl_test.gjp.cc。该页面将尝试向https://ssl_test2.gjp.cc发出AJAX请求,该请求使用自签名证书。在您信任Access-Control-Allow-Origin之前,您会在ssl_test2页面上看到“失败”,但是一旦您信任ssl_test的证书,就应该始终在ssl_test2上看到“成功”

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

答案 1 :(得分:1)

也许this会有所帮助:

<img src="https://the_site/the_image" onerror="redirectToCertPage()" />