gpt4 book ai didi

ssl - 浏览器不应用客户端证书 : 403. 7

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

我正在尝试设置客户端证书身份验证。我能够生成 CA、服务器和客户端证书。只要我使用 Fiddler,一切都会按预期进行。但是,一旦我开始使用浏览器,它就不再工作了(HTTP 错误 403.7 - 禁止访问)。

当然,我在个人存储中导入了客户端证书,并确保启用了客户端证书协商。

我也试过 openssl s_client -connect 127.0.0.1:443 -state -debug 但我无法真正理解结果......唯一奇怪的是我的 CA 没有不会出现在 Acceptable client certificate CA names 部分。

还有什么我可以尝试的吗?

更新:我认为没关系,但我的服务器证书是为 127.0.0.1 设置的。因此,我在浏览器中使用 https://127.0.0.1/...

更新 2:使用 Wireshark 我注意到我的服务器的响应取决于客户端:

fiddler (好的):

Client Hello 
Server Hello, Certificate, Server Hello Done

浏览器(不正常):

Client Hello
Server Hello, Change Cipher Spec, Encrypted Handshake Message

更新 3:启用 clientcertnegotiation 后,服务器响应不同但仍然不起作用:

Server Hello, Certificate
Certificate Request
Certificate, Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

我的自签名 CA 似乎不在可分辨名称列表中...

更新4:SSL 设置:选中 Require SSL 并将客户端证书设置为 Required。客户端证书显示在个人中,预期目的是客户端身份验证。

最佳答案

我终于找到了问题和解决方法:

如 Update3 中所述,可分辨名称 不包含我的 CA。这是因为 Distinguished Names 有 2^14 字节(16384 字节)的限制。因为我的机器上确实安装了很多 CA,所以我的 CA 根本没有安装进去。TLS 标准允许发送多条消息,但不幸的是 Windows 不支持这个!

如前所述here你有几种可能性。最简单的是这样的:

在您的服务器上,在您的注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet 下添加一个名为 SendTrustedIssuerListDWORD(不是 QWORD!)值\Control\SecurityProviders\SCHANNEL 并将其设置为 0。这将完全阻止您的服务器发送列表,让客户端从任何已安装的客户端证书中进行选择。

不幸的是,我在事件查看器中看不到任何痕迹(如其他地方所报告)。因此这个问题不容易发现(我不得不使用 Wireshark 来检查 Distinguished Names)。

关于ssl - 浏览器不应用客户端证书 : 403. 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22786762/

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