gpt4 book ai didi

internet-explorer - Internet Explorer 不提示输入客户端证书

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:02 26 4
gpt4 key购买 nike

我在 IIS7.5 中部署了一个 ASP.Net WebApi REST 服务。我正在测试如何向该服务添加客户端证书身份验证过程,以便只有特定的客户端才能访问该服务。

现状:

  • 我创建了一个根证书、一个服务器证书和一个客户端使用 xca 的证书。服务器证书和客户端证书使用创建的根证书进行签名。
  • 我使用 mmc 将创建的根证书导入本地服务器和服务器上的 Computer\Trusted Root Certification Authority客户。
  • 我使用 mmc 将创建的服务器证书导入本地服务器上的计算机\个人。
  • 我使用 mmc 将创建的客户端证书导入到 Current客户端上的用户\个人。
  • 在 IIS 中,我创建了指向已创建服务器的 HTTPS 绑定(bind)证书。我还配置了“需要 SSL”和“需要客户端”相关服务的证书。
  • 我将 REST 服务配置为在响应中包含 CORS header 。这是为了支持跨域资源的请求。

问题:

当我尝试在 Internet Explorer 中使用 Resttesttest ( http://resttesttest.com/ ) 访问客户端上的服务时,我没有收到选择客户端证书的提示,而且该服务也没有返回任何数据。 IIS 日志中的错误代码是 500。但是,在 Chrome 中执行相同的测试允许我选择一个客户端证书并且该服务返回有效数据。使用 fiddler 进行测试还可以让我正确访问该服务。

执行的故障排除步骤:

  • 我在 Internet Explorer 中检查了证书 - 创建的根证书显示在受信任的根证书颁发机构和创建的客户端证书显示在“个人”下。
  • 我检查了客户端证书的证书路径 - 根目录证书和客户端证书显示正常。
  • 我知道默认情况下 Internet Explorer 不会提示客户端证书(如果只有一个可用)。我添加了我的服务器到受信任的站点,然后设置自定义级别 - 不提示客户端当只有一个客户端证书存在时的证书选择禁用。再次测试 - 仍然没有提示我选择证书。
  • 在初始握手期间使用 wireshark 捕获流量 -我可以看到服务器向客户端发送了“证书请求”。此外,我在列表中看到了我创建的根证书接受的根证书。拿到证书后请求,客户端先发送ACK再发送FIN、ACK。服务器响应RST、ACK,通信结束。
  • 将 Internet Explorer 10 升级到 Internet Explorer 11 - 没有区别。
  • 我发现了一个与我的问题非常相似的 stackoverflow 问题有:

    Browser is not prompting for a client certificate

    但在那种情况下,Chrome 似乎也不起作用。对于我的如果 Chrome 和 Fiddler 工作,只有 Internet Explorer 不工作。这是最让我困惑的是什么。

我完全不知道我可能错过了什么,所以任何建议将不胜感激。

非常感谢,

大卫

最佳答案

我想我可能会为您解决问题。

我在我的 webapiconfig.cs 中添加了这个

var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };

在我的 Web.Config 中添加了

<authentication mode="Windows"/>
<authorization>
<allow users="?"/>
</authorization>

在我刚刚添加的 Fetch 中

{
method: "GET",
headers: myHeaders,
credentials: "include"
};

这适用于 IE11 和 IE10!

关于internet-explorer - Internet Explorer 不提示输入客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33048672/

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