gpt4 book ai didi

php - 使用 SSL 证书验证 Web 浏览器

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:39 25 4
gpt4 key购买 nike

是否可以使用 ssl 证书对网络浏览器进行身份验证。

假设我在我的应用程序中存储了一个私钥,有什么方法可以从浏览器读取 key 并尝试基于它进行身份验证吗?

最佳答案

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

服务器必须请求客户端证书,因此您需要访问服务器配置(不仅仅是在共享服务器上安装一些 PHP 代码)。这是在 SSL/TLS 层完成的(事实上,该机制并非特定于 HTTPS):服务器在 SSL/TLS 握手期间(有时通过重新协商的握手)请求客户端证书。在 Apache Httpd 中,这通常是通过 SSLVerifyClient 完成的。 (尽管您还需要指定其他选项)。

然后服务器将根据您为其配置的 CA(可能是您自己的,也可能独立于用于服务器证书本身的 CA)验证证书。 (或者,在某些情况下,您可以在服务器级别禁用证书验证,并让 PHP 应用程序执行此操作,但这有点高级,您需要知道自己在做什么。)

您可以从您的应用程序访问客户端证书并获取其主题 DN(或替代名称)以识别客户端。

不清楚您是在识别浏览器 还是用户 之后。最后,无论如何,一切都会通过浏览器,但客户端证书往往会分配给用户。用户必须将该证书安装到他们的浏览器中。


编辑:有关更多详细信息,如果您能澄清您的问题以及您打算用它做什么,将会有所帮助。

Is it possible to authenticate a web browser using an ssl certificate.

Say i store a private key in my application, is there any way to read a key from a browser and try to authenticate based on that?

首先,严格来说,没有“SSL证书”这样的东西,因为多种类型的证书可以用于SSL/TLS,而且其中一些相同的证书还可以用于SSL/TLS以外的其他目的。通常,“SSL 证书”是指“SSL/TLS 上下文中的 X.509 证书”。

因此,使用 SSL 证书对 Web 浏览器进行身份验证意味着在 SSL/TLS 层进行。 (有人尝试在 HTTP 层使用 X.509 证书实现消息级安全,但它们并未得到浏览器的广泛支持。)

其次,私钥由您进行身份验证的远程方持有。对远程方进行身份验证的本地方看不到任何私钥。如果您(作为服务器)想要验证 Web 浏览器,则浏览器需要私钥,而不是您的(大概是 PHP)应用程序。在这种情况下,如果您要验证的浏览器是您的(PHP?)应用程序,那么您的(PHP?)应用程序为什么会有/需要一个私钥还不是很清楚。

您的验证应用程序可能需要的(如果它不是由服务器本身完成的)是一个 CA 证书,以便能够验证它所提供的客户端证书(或者至少是某种形式的信任 anchor ,用于验证客户端证书)。这里不需要私钥,只需要公钥和证书,除非您希望您的应用程序也成为 CA。

的确,您可以让您的应用程序成为一个微型 CA。它可以使浏览器生成 key 对并向服务器发送证书请求(有一种机制可以让网页让浏览器完成所有这些工作)。然后服务器将生成证书并让浏览器根据其私钥将其导回。随后,浏览器可以使用此证书与该服务器(或可以识别这些证书的其他服务器)进行身份验证。

关于php - 使用 SSL 证书验证 Web 浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com