【问题标题】:IIS Server 403.7 error not recognizing Client Certificate for ASP.NET appIIS 服务器 403.7 错误无法识别 ASP.NET 应用程序的客户端证书
【发布时间】:2018-04-14 22:35:57
【问题描述】:

我正在尝试在 2 个系统之间执行相互身份验证,但即使客户端拥有正确的证书,服务器也会不断返回 403.7。我做了一些诊断,似乎虽然应用程序正在处理证书,但它在某处被“丢弃”(当使用错误的证书时,它不返回 403.16 但返回 403.7)。

下面的一些背景

服务器 - IIS 上的 ASP.NET Web 服务,可用于 SOAP 调用的 WSDL。有 2 个根证书,一个用于服务器名称,另一个用于验证客户端证书。证书都是自签名的,用于本地测试。

客户端 - IIS 上的 ASP.NET 应用程序,带有对服务器的 SOAP 调用。从 服务器 颁发客户端证书,并将两个根证书安装为受信任的 CA。访问 dll 以专门为 服务器 执行 SOAP 调用。客户端证书是 X509Certificate2,客户端通过文件(不是证书存储)访问它。

客户端实际上是另一个Web应用程序的服务器,客户端服务器之间需要有一个接口。 Clientserver 将在不同的网络上,并且需要通过 SSL 证书进行相互身份验证。两个系统之间的连接都是 TLS1.2

迄今为止进行的诊断

  • 客户端能够编译相同的 dll 并作为控制台应用程序运行,获取正确的客户端证书并通过服务器成功验证(证明代码正在运行)。故意选择错误的证书时,返回 403.16(正确行为)
  • 客户端浏览器能够访问服务器页面并使用正确的客户端证书进行身份验证(证明证书有效)
  • 客户端 使用 dll 文件的 web 应用程序能够访问和处理正确的证书(证明 web 应用程序能够访问证书)。当故意选择错误的证书时,仍然返回 403.7 而不是 403.16。 (我的证书去哪儿了?)
  • Wireshark 表示双方都在交谈,但我无法让 Wireshark 执行解密以提供更深入的详细信息(正在处理此问题)

问题

根据标题,即使 客户端 Web 应用程序能够访问该文件,服务器也会不断返回 403.7(通过 IIS Failed-Request-Tracing)。由于 client 是在 IIS 上运行并与 server 交互的 Web 应用程序,因此我假设 client IIS 服务正在处理这些 Web 请求。

我怀疑它与任何一个都有关

  • 客户 IIS 帐户和/或其权利
  • 一些我不知道的时髦的 windows/TLS/SSL 协议
  • IIS 设置?

了解如何进一步调试或解决此问题?

【问题讨论】:

    标签: iis soap tls1.2 client-certificates mutual-authentication


    【解决方案1】:

    好吧,在通过wireshark进行了一轮测试和故障排除之后,应用程序似乎无法访问私钥,因为一开始就没有。使用私钥从 .cer 快速更改为 .pfx 很快解决了这个问题。

    但是它仍然没有解释为什么控制台应用程序可以使用 .cer 而不是 .pfx 访问服务器(没有私钥,可能与 IIS 有关,但我只是做一个假设。)

    另一个开发应用程序也发生了类似的情况,但是他们使用的是带有私钥的 .pfx 文件。进一步调试表明他们使用的是 X509Certificate 而不是 X509Certificate2。那么这个案例的问题是由于他们无法使用旧类访问私钥。

    总之, - 确保存在可供应用程序访问的私钥,以便正确提供正确的证书,否则根本不会提供任何证书。

    【讨论】:

      猜你喜欢
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      相关资源
      最近更新 更多