验证与SSL证书的Web浏览器(Authenticate Web Browser with SSL

2019-09-22 16:26发布

是否有可能使用验证SSL证书的web浏览器。

说我存储私钥在我的应用程序,有没有办法读取从浏览器的关键,并尝试基于该认证?

Answer 1:

您可以使用验证SSL / TLS客户端证书身份验证的浏览器/用户。

客户端证书必须由服务器请求,所以你需要访问的服务器配置(而不仅仅是安装一个共享服务器上的一些PHP代码)。 这是在SSL / TLS层完成(事实上,该机制不是特定于HTTPS):服务器的SSL / TLS握手(有时通过重新协商握手)过程中请求客户证书。 在apache httpd的,这通常通过完成SSLVerifyClient (虽然你需要太指定其他选项)。

然后,服务器将验证对你已经配置有它的CA证书(可能是你自己的,并可能独立于用于服务器证书本身的CA)。 (另外,你可以在某些情况下,服务器级别禁用证书验证,并有PHP应用程序做到这一点,但是这是一个比较先进的,你需要知道你在做什么。)

您可以从应用程序访问客户端证书,并获得其主题DN(或替代名称),以确定客户端。

目前尚不清楚是否识别浏览器用户之后是。 最后,一切顺利的通过浏览器反正,但客户端证书往往会被分配给用户。 用户必须到证书安装到自己的浏览器。


编辑:对于进一步的细节,它会帮助,如果你能澄清你的问题,你打算用这个来做。

是否有可能使用验证SSL证书的web浏览器。

说我存储私钥在我的应用程序,有没有办法读取从浏览器的关键,并尝试基于该认证?

首先,严格来说,有没有这样的事,作为一个“SSL证书”,因为多种类型的证书可用于SSL / TLS和一些相同的证书也可用于其他目的,而不是SSL / TLS。 典型地,“SSL证书”是指“在SSL / TLS的上下文X.509证书”。

因此,验证使用的SSL证书的Web浏览器意味着在SSL / TLS层这样做。 (已经有在HTTP层使用X.509证书来实现消息级安全性的尝试,但他们没有得到广泛的浏览器支持。)

其次,私钥由您验证远程方举行。 即验证对方的本地方没有看到任何私钥。 如果你(服务器)要验证一个网页浏览器,它是需要有私钥,而不是你(大概PHP)应用程序的浏览器。 在这种情况下,它不是很清楚为什么你(PHP?)应用程序将有/需要一个私钥,如果它是要进行身份验证的浏览器。

你的验证应用程序可能需要(如果它不是由服务器本身完成的)是CA证书能够验证其呈现(或至少是某种形式的信任锚,用以验证客户端证书的)的客户端证书。 这里有不需要的私钥,只是公共密钥和证书,除非你想你的应用程序是一个CA了。

事实上,你可以有你的应用程序是一个小型的CA. 它可以使浏览器生成密钥对,并发送证书请求到服务器(有机制,有一个网页使浏览器做这一切)。 然后服务器会生成证书,使浏览器导入它背靠着自己的私钥。 随后,该浏览器可以使用此证书与该服务器(或会承认这些证书的其他服务器)的认证。



Answer 2:

不,你不能这样做。

有一些发展的事情,和几个小时前W3C已经取得了加密标准的建议。

然而,你可以把钥匙在cookie中,并用它来识别。 这是默认的PHP会话ID的行为。



文章来源: Authenticate Web Browser with SSL certificate