【发布时间】: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应用程序的服务器,客户端和服务器之间需要有一个接口。 Client 和 server 将在不同的网络上,并且需要通过 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