测试客户端浏览器中是不是安装了客户端证书
Posted
技术标签:
【中文标题】测试客户端浏览器中是不是安装了客户端证书【英文标题】:Testing if a client certificat is installed in the client browser测试客户端浏览器中是否安装了客户端证书 【发布时间】:2011-01-01 06:12:58 【问题描述】:我想知道你们中是否有人知道是否可以在 javascript 或 php 中测试客户端是否在浏览器中安装了特定的客户端证书。
问题是我们安装了服务器证书,但要被客户端识别,他们需要 2 个客户端证书,使他们能够识别我们服务器证书颁发者的权限。我们想在浏览器中测试这两个证书,如果没有,我们建议客户端在进入 https 模式之前下载它们...
有人可以帮忙吗?如果您知道,请详细说明您的答案。
【问题讨论】:
您应该只需要在客户端测试一个证书,即根证书。 是的,问题是我们的新服务器证书依赖于一个新的并且不是所有浏览器都知道的权威。我们需要像 firefox 这样的浏览器来下载新的根 CA,以便他们能够识别我们的服务器证书。但我不知道如何测试浏览器是否已经有根 CA 或者是否需要下载它。一旦您通过 https 连接到我们的服务器,您就会发现我们的服务器证书不可信,因为权限未知。除非您为根 CA 安装客户端证书。 这不是“客户证书”的意思。您想知道客户端是否信任特定的根证书。那是不同的。 是的,我认为它的调用是这样的,我不是这个刚刚发现的专家。我只知道我有 2 个证书,如果他们希望能够识别我的服务器证书,我的客户端浏览器应该安装这些证书。如果他们仍然需要它,我想在进入 https 之前为他们提供这样做的选项...... 客户端证书是标识客户端的证书。在正常的安全 Web 浏览中使用客户端证书是不常见的。通常它用于更高的安全情况。你说的是ROOT CA。 【参考方案1】:您可以在客户端使用 javascript 从安全 (https) 源请求已知文件。如果请求失败,则意味着客户端拒绝接受您的证书(或其他网络错误),此时您可以弹出一条消息,要求用户安装根证书,并带有指向根证书的链接。
这必须从非安全页面完成。否则用户可能会拒绝您的证书并且永远不会加载页面以开始,因此您的 javascript 永远不会运行
不能在PHP中完成,因为php(服务器端)无法确定客户端浏览器是否安装了特定的root ca
但是我不会这样做。取而代之的是获得适当的证书。
您似乎对 SSL 的一般工作原理了解不足。我建议花一些时间了解 SSL 的工作原理以及证书的使用方式。
直流
要了解如何使用 javascript 发送和接收 http 响应,请阅读此页面。
http://www.w3schools.com/XML/xml_http.asp
它可以用来发送和接收任何文本数据,而不仅仅是xml。它很容易实现,但您必须注意浏览器版本问题。
直流
【讨论】:
我确认我对 SSL 工作了解不足。互联网上有这么多技术,你无法了解和专攻我寻求帮助的一切。从那时起,我们决定作为解决方案,在我们的网站上放置一个非 https 页面,解释在继续下一个安全页面之前需要安装新证书。它不是很好,但它是我们发现解决问题的唯一方法...关于您的解决方案,我想知道您如何通过 javascript 请求文件.. 是否有任何下载功能?你使用 document.location 吗?问题仅用于非正式目的。 我已经更新了我的答案,包括一个使用 javascript 从服务器加载文件的链接。这是大多数 ajax 功能的基础【参考方案2】:从您的 https 站点加载的 javascript 将隐藏一条警告消息。
在警告消息中,您可以链接 Windows 更新站点或可以将更新的根证书下载到其浏览器的任何位置。
【讨论】:
【参考方案3】:PHP 是一种服务器端语言。如果你真的想对此进行测试,那么你需要使用 JavaScript 进行测试,然后将 AJAX 请求发送回 PHP。
但我认为您的问题还有另一种解决方案。通常,当 CA 更改其名称等时,它们通常具有您可以使用的新“中间证书”。 (如果您有 apache httpd 服务器,那么您也可以在他们的网站上搜索“ca bundle”。)使用此捆绑包,您可以将新的 CA 证书与您的证书一起发送。
【讨论】:
【参考方案4】:强迫您的用户下载并安装自制的 CA 证书是丑陋和可恨的。相反,向他们表达爱意并支付 30 美元以获得由信誉良好且已受信任的 CA 签署的 SSL 证书。
【讨论】:
嗯...我们正在使用受信任的证书,但该公司最近更改了他们的 CA,我们已经向他们支付了此服务器证书的费用,因此我们想使用它。就像他们有一个新的 ROOT CA 权威证书,浏览器不是最新的,不认识他们。我们都知道人们不经常更新他们的浏览器......而且 safari、firefox 不能通过 windows 更新工作......所以我们试图找到一个解决方案。但可以肯定的是,我们真的对这种变化以及我们的 SSL 证书提供商感到不高兴。太糟糕了,它的价格是正确的,并且一开始就被所有浏览器认可... 我们的服务器证书是通配符证书,价格远高于 30 美元 :) 我还是同意你的观点,这是一个让人们下载和安装ROOT CA权限证书的狗屁程序……这不应该发生。我们并不幸运。 似乎只有 Internet Explorer 可以识别它,我什至不确定。 如果他们更改了根 CA 并且浏览器无法识别它,则要求退款。他们打破了证书而不是你。然后去一家有信誉的公司并获得新的证书。所有其他选项都容易出现严重问题,让您看起来像一个不成熟的企业以上是关于测试客户端浏览器中是不是安装了客户端证书的主要内容,如果未能解决你的问题,请参考以下文章
win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)