我有网络服务,其中包含我想要使用客户端证书访问的.asmx入口点。有一些内部逻辑可以检查请求中客户端证书的有效性,并确保它存在于“受信任的人”中。本地机器的证书存储。
将.asmx文件设置为'接受'或者'要求' IIS中的客户端证书在我的本地开发人员工具箱中运行正常,但在我们的QA机器上,服务器没有响应,而我从另一端发出的唯一错误消息是'底层连接已关闭:接收时发生意外错误。' 我真正不理解的是,即使非ssl通信也开始失败。
Wireshark 报告服务器没有发出 CertificateRequest ,这让我怀疑服务器的配置是否有问题,而不是客户端证书。 IIS失败请求跟踪仅显示'由于线程退出或应用程序请求而导致I / O操作中止,没有任何堆栈跟踪或有用信息。
我使用的客户端证书是从两台计算机的受信任根证书中的根创建的,并且服务器的证书在其到期时也是有效的。我可以访问服务器上的其他URL而不会在我的浏览器中出现问题并且没有SSL错误。
https://myservice/api.asmx //接收上出现意外错误
https://myservice/logon // 200,有效的SSL证书
有没有人在打开“接受”时遇到这种错误的经验?或者'要求' IIS中的客户端证书?对于为我的服务运行的两个负载平衡服务器配置客户端证书的任何文件夹或应用程序,似乎都适用。任何帮助将不胜感激。
答案 0 :(得分:0)
好的,最后问题出在负载均衡器配置上。显然netscaler正在处理SSL握手本身,因此IIS的CertificateRequest从未进入客户端(Wireshark很明显没有找到CertificateRequest),相反,客户端发送的任何客户端证书都没有进入IIS。
解决方案是在netscaler上将负载均衡协议从SSL更改为SSL_Bridge。