我想打电话给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安全通道。
答案 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) 之后,我能够连接。
感谢您的帮助。