.net - 在使用 pfx 证书作为安全 SOAP 请求的客户端证书之前,.NET 是否必须具有可用的根 CA 证书?

标签 .net web-services ssl

我正在编写一个 .NET 应用程序,它必须使用由外部提供商提供的 Web 服务 API。该提供商给了我一个 pfx 证书(和一个密码),我必须使用它来向他们的服务器验证我的 HTTP 客户端。

当我使用 SOAPUI 使用此证书和此密码访问 Web 服务时,Web 服务回答正常。

当我尝试创建一个 .NET 客户端作为 Web 引用时,连接失败,告诉我“身份验证失败,对等方已关闭连接”。

深入使用 Wireshark 并比较数据流,我发现 SOAPUI 会发送客户端证书以响应服务器证书,而 .NET 程序则不会。客户端证书加载到 ClientsCertificate 集合中,但 .NET 拒绝发送客户端证书。

证书由外部提供商持有的 CA 颁发和签署,但我们没有 CA 证书。

我目前的理论是,如果 .NET 无法验证证书链,它会拒绝使用该证书。是这样吗,在那种情况下,有没有办法绕过这个验证呢?

最佳答案

当尝试在 vb.net 应用程序中执行 SFTP 时,我将此代码添加到页面顶部。

Public Sub New()
       ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf CertificateAuthenticate)
End Sub
Private Function CertificateAuthenticate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean
    Return True
End Function

所以在普通的 FTP 客户端中,ftp 客户端会提示用户“信任”证书,所以这个“返回 True”实质上告诉 .net 应用程序信任证书。不确定这是否是答案,但希望对您有所帮助。

关于.net - 在使用 pfx 证书作为安全 SOAP 请求的客户端证书之前,.NET 是否必须具有可用的根 CA 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52762469/

相关文章:

c# - 如何编码指向结构指针数组的指针?

php - 如何从 php webservice 获取许多 vars 到 iPhone 应用程序?

java - 从 java web start 使用 CXF web 服务

authentication - Tomcat - 启用双向 SSL

ios - iPhone 的 Urban Airship 推送通知 : SSL Problem

.net - 将 Silverlight 连接到本地计算机的 COM 端口

c# - 无法使用 GET 请求发送具有此动词类型的内容正文

c# - 具有 1000 个值的 Silverlight 组合框

c# - 使用 Visual Studio 开发服务器时如何让 Web 服务使用固定端口号?

javax.net.ssl.SSLHandshakeException : Handshake failed in Android 7. 0