测试客户端浏览器中是否安装了客户端证书

时间:2010-01-04 13:41:45

标签: php ssl certificate

我想知道是否有人知道在javascript或php中是否可以测试客户端是否在浏览器中安装了特定的客户端证书。

问题是我们已经安装了服务器证书但是要被客户端识别,他们需要2个客户端证书,这些证书使他们能够识别我们服务器证书颁发者的权限。我们想在浏览器中测试这两个证书,如果没有,我们建议客户端下载它们,然后再进入https模式......

有人可以帮忙吗?如果您知道答案,请详细说明您的答案。

4 个答案:

答案 0 :(得分:4)

您可以使用javascript从安全(https)源请求已知文件,从而在客户端执行此操作。如果请求失败则表示客户端拒绝接受您的证书(或其他网络错误),此时您可以弹出一条消息,要求用户安装根证书以及根证书的链接。

必须从非安全页面完成此操作。否则用户可能会拒绝您的证书,并且永远不会加载页面,因此您的javascript永远不会运行

无法在PHP中完成,因为php(服务器端)无法确定客户端浏览器是否安装了特定的根目录

然而,我不会这样做。获得适当的证书。

您似乎对SSL的工作方式了解不足。我建议花些时间了解SSL的工作原理以及如何使用证书。

DC

了解如何通过javascript发送和接收http响应阅读此页面..

http://www.w3schools.com/XML/xml_http.asp

它可用于发送和接收任何文本数据,而不仅仅是xml。这很容易实现,但您必须了解浏览器版本问题。

DC

答案 1 :(得分:0)

将通过从您的https网站加载的javascript隐藏的警告消息怎么样。

在警告消息中,您可以链接Windows更新站点或更新的根证书可以下载到其浏览器的任何位置。

答案 2 :(得分:0)

PHP是一种服务器端语言。如果你真的想测试它,那么你需要用JavaScript来做,然后将一个AJAX请求发送给PHP。

但我认为您的问题还有另一种解决方案。通常,当CA更改其名称等时,他们通常会使用新的“中级证书”。 (如果你有一个apache httpd服务器,那么你也可以在他们的网站上搜索“ca bundle”。)使用这个包你可以发送新的CA证书和你的证书。

答案 3 :(得分:-1)

强制用户下载并安装自行开发的CA证书是丑陋和仇恨的。相反,向他们展示爱情,并支付30美元,以获得由信誉良好,已经信任的CA签署的SSL证书。