IE未在TLS相互身份验证中发送客户端证书

时间:2018-02-19 05:21:58

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

我正在尝试与第三方API建立TLS相互身份验证。客户端证书配置正常,当我尝试通过Chrome访问终点网址时,它工作正常(Chrome要求在消息框中确认证书,当我这样做时,页面会显示其内容)。

当我尝试使用IE时它不起作用并显示此消息

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.

所以我将详细信息记录到Wireshark,这就是它的外观 two's compliment 当我详细了解详细信息时,我可以看到客户端证书从未在步骤9(TLSv1.2 379证书,客户端密钥交换,更改密码规范,加密握手消息)发送。

在第10步中,这是我得到的错误

enter image description here

enter image description here

这种行为背后的原因是什么?

更新:当我尝试通过代码访问smae端点并检查SChannel日志时,我可以看到这样的警告

// make sure db/client/connection can support emoji
sequelize.query("SET NAMES utf8mb4;");
// confirm settings
sequelize.query("SHOW VARIABLES LIKE 'character_set_%'").then(function(data) {
     console.log(data);
});

2 个答案:

答案 0 :(得分:2)

看看它在Chrome中是如何工作的但不是IE我觉得可以说这个问题是IE特有的。由于您已经添加了证书,因此听起来好像是自动选择了证书,但没有发送。您还收到一条消息,其中显示"您的TLS安全设置未设置为默认设置"在你的错误。我发现了一些可能适用于您的方案here的信息。基本上它表示如果启用SSL 2.0,IE无法成功使用TLS 1.2。你能检查这个设置吗?

settings pic

转到互联网选项 - >预先。寻找"使用SSL 2.0"因为我使用的是更高版本的Windows / IE,因为我不能选择SSL 2.0,但是你可能拥有它,具体取决于你使用哪个版本,我不会在我的脑海中看到这个选项。重新使用。

答案 1 :(得分:1)

我遇到了类似的问题,证书上有破损的证书撤销清单(crl)

enter image description here

我能够使用Fiddler跟踪此情况,enter image description here显示了对失败的CRL的请求。您应该看到与WireShark相同的内容。此外,当使用Fiddler解密SSL流量时,没有问题,因为Fiddler随后使用自己的自签名证书与浏览器进行通信。

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

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

https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage