IE 不在 TLS 相互身份验证中发送客户端证书
IE is not sending Client certificate in TLS mutual authentication
我正在尝试与第三方建立 TLS 相互认证 API。客户端证书配置良好,当我尝试通过 Chrome 访问端点 url 时它工作正常(Chrome 要求在消息框中确认证书,当我这样做时页面显示其内容)。
同样的事情,当我尝试使用 IE 时它不工作并显示此消息
Cannot securely connect to this page
This might be because the site uses outdated or unsafe TLS security settings. If this keeps happening, try contacting the website’s owner.
Your TLS security settings aren’t set to the defaults, which could also be causing this error.
所以我将详细信息记录到 Wireshark,这就是它的样子
当我深入了解细节时,我发现客户端证书从未在第 9 步发送(TLSv1.2 379 证书、客户端密钥交换、更改密码规范、加密握手消息)。
在第 10 步中,这是我遇到的错误
这种行为背后的原因是什么?
更新:当我尝试通过代码访问 smae 端点并检查 SChannel 日志时,我可以看到这样的警告
The remote server has requested TLS client authentication, but no
suitable client certificate could be found. An anonymous connection
will be attempted. This TLS connection request may succeed or fail,
depending on the server's policy settings.
鉴于它在 chrome 中的工作原理,但在 IE 中却不是,我认为可以肯定地说问题是 IE 特有的。由于您已经添加了证书,所以听起来证书是自动选择的,但没有发送。您还会收到一条消息,在您的错误中显示 "Your TLS security settings aren’t set to the defaults"。我发现了一些可能适用于您的场景的信息 here。基本上它表示如果启用了 SSL 2.0,IE 将无法成功使用 TLS 1.2。你能检查这个设置吗?
settings pic
转到 Internet 选项 -> 高级。寻找 "Use SSL 2.0" 我可能没有看到该选项,因为我使用的是 windows/IE 的更高版本,其中 SSL 2.0 不是一个选项,但您可能有它,具体取决于哪个版本) 你正在使用。
我的证书遇到了类似的问题,该证书有一个 损坏的证书吊销列表 (crl)。
我能够通过 Fiddler 追踪到这个,它显示了对失败的 CRL 的请求。您应该看到与 WireShark 相同的情况。此外,当使用 Fiddler 解密 SSL 流量时,没有问题,因为 Fiddler 然后使用自己的 self-signed 证书与浏览器通信。
我不确定这会对您的情况产生任何影响,因为问题可能出在客户端证书上。
对于临时(不安全!)work-around,您可以禁用 clr 检查。如果这解决了问题,那么 crl 确实是问题所在,您将需要以某种方式请求正确的证书,而不会出现错误的 crl。
我正在尝试与第三方建立 TLS 相互认证 API。客户端证书配置良好,当我尝试通过 Chrome 访问端点 url 时它工作正常(Chrome 要求在消息框中确认证书,当我这样做时页面显示其内容)。
同样的事情,当我尝试使用 IE 时它不工作并显示此消息
Cannot securely connect to this page
This might be because the site uses outdated or unsafe TLS security settings. If this keeps happening, try contacting the website’s owner.
Your TLS security settings aren’t set to the defaults, which could also be causing this error.
所以我将详细信息记录到 Wireshark,这就是它的样子
在第 10 步中,这是我遇到的错误
这种行为背后的原因是什么?
更新:当我尝试通过代码访问 smae 端点并检查 SChannel 日志时,我可以看到这样的警告
The remote server has requested TLS client authentication, but no
suitable client certificate could be found. An anonymous connection
will be attempted. This TLS connection request may succeed or fail,
depending on the server's policy settings.
鉴于它在 chrome 中的工作原理,但在 IE 中却不是,我认为可以肯定地说问题是 IE 特有的。由于您已经添加了证书,所以听起来证书是自动选择的,但没有发送。您还会收到一条消息,在您的错误中显示 "Your TLS security settings aren’t set to the defaults"。我发现了一些可能适用于您的场景的信息 here。基本上它表示如果启用了 SSL 2.0,IE 将无法成功使用 TLS 1.2。你能检查这个设置吗?
settings pic
转到 Internet 选项 -> 高级。寻找 "Use SSL 2.0" 我可能没有看到该选项,因为我使用的是 windows/IE 的更高版本,其中 SSL 2.0 不是一个选项,但您可能有它,具体取决于哪个版本) 你正在使用。
我的证书遇到了类似的问题,该证书有一个 损坏的证书吊销列表 (crl)。
我能够通过 Fiddler 追踪到这个,它显示了对失败的 CRL 的请求。您应该看到与 WireShark 相同的情况。此外,当使用 Fiddler 解密 SSL 流量时,没有问题,因为 Fiddler 然后使用自己的 self-signed 证书与浏览器通信。
我不确定这会对您的情况产生任何影响,因为问题可能出在客户端证书上。
对于临时(不安全!)work-around,您可以禁用 clr 检查。如果这解决了问题,那么 crl 确实是问题所在,您将需要以某种方式请求正确的证书,而不会出现错误的 crl。