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

时间:2018-10-11 14:20:13

标签: .net web-services ssl

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

当我使用SOAPUI通过此证书和此密码访问Web服务时,Web Service会很好地回答。

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

深入研究Wireshark并比较数据流,我看到SOAPUI响应服务器证书发送了客户端证书,而.NET程序却没有。客户端证书已加载到ClientsCertificate集合中,但是.NET拒绝发送客户端证书。

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

我当前的理论是.NET无法验证证书链,则拒绝使用该证书。是这种情况,在这种情况下,有没有办法绕过此验证?

1 个答案:

答案 0 :(得分:0)

当尝试在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应用程序信任证书。不知道这是否是答案,但希望它会有所帮助。