【问题标题】:IE is not sending Client certificate in TLS mutual authenticationIE 未在 TLS 相互身份验证中发送客户端证书
【发布时间】:2018-02-19 05:21:58
【问题描述】:

我正在尝试与第三方 API 建立 TLS 相互身份验证。客户端证书配置良好,当我尝试通过 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 正确配置了客户端证书;您是否在 Internet Explorer 中执行了任何步骤以将客户端证书添加到其中?
  • @crchurchey 我只在 Windows 密钥库中配置了客户端证书,在 chrome 上没有任何内容
  • @Athul 你用的是什么服务器?它是什么类型的端点?

标签: internet-explorer wireshark x509 tls1.2 client-certificates


【解决方案1】:

看看它在 chrome 中的工作原理,而不是 IE,我认为可以肯定地说这个问题是 IE 特有的。由于您已经添加了证书,因此听起来证书正在被自动选择,但没有发送。您还会收到一条消息,在您的错误中显示“您的 TLS 安全设置未设置为默认值”。我发现了一些可能适用于您的场景here 的信息。基本上它说如果启用了 SSL 2.0,IE 将无法成功使用 TLS 1.2。你能检查一下这个设置吗?

settings pic

转到互联网选项 -> 前进。寻找“使用 SSL 2.0”我大概没有看到该选项,因为我使用的是更高版本的 Windows/IE,其中 SSL 2.0 不是一个选项,但您可能拥有它,具体取决于您使用的版本'正在使用。

【讨论】:

  • 我在 IE 11 上,我也没有这些选项
【解决方案2】:

我遇到了类似的问题,其证书证书吊销列表 (crl) 损坏

我可以使用 Fiddler 追踪到这个问题,它显示了对失败 CRL 的请求。您应该看到与 WireShark 相同的内容。此外,当使用 Fiddler 解密 SSL 流量时,没有问题,因为 Fiddler 使用自己的自签名证书与浏览器通信。

我不确定这会对您的情况产生任何影响,因为问题可能出在客户端证书上。

对于临时(不安全!)解决方法,您可以禁用 clr 检查。如果这解决了问题,那么 crl 确实是问题所在,您将需要以某种方式请求正确的证书,而不会出现错误的 crl。

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 2016-10-11
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2015-12-26
    • 2016-07-09
    相关资源
    最近更新 更多