2路ssl网络服务测试

时间:2016-06-09 19:05:42

标签: c# ssl soapui

我想打电话给ssl网络服务。我有可靠的商店安装的服务器证书。 我正在使用SOAP UI工具和soap声纳调用ssl Web服务,我正在使用htts调用该服务。

看起来证书没有通过请求。

我创建了一个C#应用程序来传递带证书的请求。

但仍然是同样的错误。

您能否建议使用其他工具来测试网络服务?或示例代码?

 private void button4_Click(object sender, EventArgs e)
    {
        try
        {

            var clientHandler = new WebRequestHandler();
            string address = @"https://xxx.xxx.xxx.xxx:58444/IVR/";
            var requestXML = "\\request.xml";
            var serialized = File.ReadAllText(Environment.CurrentDirectory + requestXML);
            var cert = GetCert();
            CertificateWebClient myWebClient = new CertificateWebClient(cert);

            string fileName = Environment.CurrentDirectory + requestXML;
            myWebClient.Headers.Add("Content-Type", "application/xml;charset=utf-8");
            byte[] responseArray = myWebClient.UploadFile(address, fileName);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }


 public class CertificateWebClient : WebClient
{
    private readonly X509Certificate2 certificate;

    public CertificateWebClient(X509Certificate2 cert)
    {
        certificate = cert;
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
        request.ServicePoint.Expect100Continue = true;
        request.ServerCertificateValidationCallback =
            delegate(Object obj,
            X509Certificate X509certificate,
            X509Chain chain,
            System.Net.Security.SslPolicyErrors errors)
            {
                if (errors == System.Net.Security.SslPolicyErrors.RemoteCertificateNameMismatch)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            };

        request.ClientCertificates.Add(certificate);
        return request;
    }
}

例外: -

请求已中止:无法创建SSL / TLS安全通道。

2 个答案:

答案 0 :(得分:0)

您正在设置HTTP地址:

string address = @"http://xxx.xxx.xxx.xxx:{port}/IVR/";

WebClient永远不会将HTTPS证书传递给HTTP地址 您的地址应如下所示:

string address = @"https://xxx.xxx.xxx.xxx:{HTTPSPORT}/IVR/";

答案 1 :(得分:0)

我解决了这个问题 我的证书没有私钥,所以我再创建并安装。 (how to create a private key) 之后,我能够连接。

感谢您的帮助。