【问题标题】:COULD NOT CREATE SSL/TLS SECURE CHANNEL: Client certificates, TomCat and .Net无法创建 SSL/TLS 安全通道:客户端证书、TomCat 和 .Net
【发布时间】:2013-04-07 06:41:17
【问题描述】:

我遇到了许多人报告的客户端证书问题,但我见过的解决方案都没有为我工作。我有一个在 VB.Net 中编写的客户端(使用 VS 2010 和 .Net 框架 4.0),它需要连接到在 Apache Tomcat/5.0.27 上运行的 Web 服务。当不需要客户端证书时,它可以与 SSL 一起正常工作,但一旦需要客户端证书,它就会失败并显示“请求已中止:无法创建 SSL/TLS 安全通道”

在启用 SSL 时使用 Internet Explorer(8、9 和 10,在 XP 和 Win7x32 上)进行测试(通过在系统中设置 sslProtocol="TLS" secure="true" scheme="https" 在 Tomcat 上进行配置。 xml 文件),但客户端证书被禁用(clientAuth="false"),在客户端 PC 上安装 CA 证书和服务器证书后,IE 很高兴。 (如果没有证书,IE 会报错,但你可以告诉它忽略警告。安装证书后,它会在没有任何警告的情况下连接。)当需要客户端证书时(clientAuth="true"),IE 将无法连接。在我导入客户端证书文件后,它仍然无法连接。 IE 显示客户端文件已安装,并且显示证书正常并且信任 CA,但它显示在似乎错误的存储中:中间证书颁发机构,并且未在目的下勾选客户端身份验证。 MMC 证书管理单元显示客户端证书位于个人 - 当前用户存储中。

证书是由网络服务的所有者颁发给我们的,所以理论上它必须有效。属性看起来没问题,目的显示“所有应用程序策略”。

我需要让它与我的 .Net 客户端一起工作。我使用 Web 引用来创建到 Web 服务的连接。我设置 PreaAuthenticate=True,并将证书文件附加到 Web 参考,并且可以在 IDE 中看到它附加。使用网络监视器,我可以看到服务器将证书发送给客户端(在两个大数据包中),但客户端似乎没有将任何证书发送回服务器。

我尝试了各种建议,例如设置 ServicePointManager.Expect100Continue = true 和 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3,但这没什么区别。

我已经禁用了防火墙和代理服务器,所以应该不会阻止流量。

我将不胜感激。

【问题讨论】:

    标签: ssl .net-4.0 client-certificates


    【解决方案1】:

    好的,事实证明他们提供的证书有问题,或者它与客户端不兼容。我找到了有关使用 OpenSsl 创建证书的说明,它适用于他们的服务器。他们使用 java 的 keytool 来制作证书,所以要么它创建了一个不兼容的证书,要么他们没有使用正确的程序,而我使用 OpenSsl 的程序是正确的。

    OpenSsl 中的步骤是创建私钥文件 (client.key)、创建证书请求 (client.req)、签署密钥 (client.pem) 然后导出它 (client.pfx)。

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 2021-12-13
      相关资源
      最近更新 更多