403.7 IIS 7.5 SSL客户端证书身份验证问题

如何解决403.7 IIS 7.5 SSL客户端证书身份验证问题

我正在使用IIS 7.5下的2种SSL与外部合作伙伴一起测试Web服务。我需要SSL,需要客户端证书并使用一对一映射来对域帐户进行身份验证。我已经配置了所有内容,并且可以在我们的网络上正常工作(我能够提供客户端证书,进行身份验证并从浏览器和测试工具调用服务)。 从网络外部(大多数情况下,请参见下文),我收到403.7错误。我已经遍历了计算机级别的证书存储,并确保证书和CA受信任。 这是奇怪的事情。我在家中获得了要进行测试的I型证书(并获得了403.7,就像我们打算的合作伙伴一样)。因此,我设置了fiddler来调试SSL并发送我的证书,这出于某些原因而起作用。我设置了一个测试工具以通过完全相同的证书,并获得了403.7。我在浏览器(IE 9)中进行测试,没有得到客户端证书的提示,并获得403.7。 任何帮助表示赞赏。 法案     

解决方法

上次检查时,IIS使用重新协商(默认情况下)来获取客户端证书:第一次握手是服务器不请求客户端证书,然后是另一个握手(这次是加密的)请求证书(通过TLS
CertificateRequest
消息)。这将阻止您从Wireshark中看到任何内容,除非您将其配置为使用服务器的私钥并解密流量(请注意,这仅适用于某些密码套件)。 查看客户端证书协商的一种方法是使用netsh和clientcertnegotiation = true(这与初始协商有关)将IIS配置为使用初始客户端证书协商。至少在握手过程中会清晰地发送“ 0”和证书,因此您应该能够使用Wireshark看到它。 如果客户端没有向服务器发送证书作为对“ 0”的响应,您仍然会看到来自客户端的空的“ 3”消息。 如果您不导出带有证书的私钥以与Fiddler或任何其他客户端一起使用,则它将无法使用证书。它最多可能尝试发送证书,但是握手将失败(因为“ 4”消息需要由客户端的私钥进行签名)。 我想您可能会遇到以下问题: 服务器不接受不提供证书的证书(它实际上是可选的), 出示无效的证书会使其失败并导致此403.7状态代码(许多服务器和SSL / TLS堆栈会将其实施为致命错误,但是TLS规范并未说
unsupported_certificate
certificate_revoked
certificate_expired
certificate_unknown
应该是致命的,因此这由服务器决定)。     ,您是否在使用同一台物理计算机测试网络内和外部网络连接?如果不是,您确定外部网络客户端具有可访问的私钥吗? 我之前尚未配置Fiddler客户端身份验证。它是否从标准证书存储区读取客户端证书和密钥?它是否直接从PKCS12中读取? 可能有用的另一件事是检查WireShark中的TLS握手。具体来说,请检查服务器的“证书请求”消息,因为此处的数据会提示客户端(IE9)应在提示中显示哪些客户端证书。比较内部和外部连接。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?