Ich wollte ssl Web-Service aufrufen. Ich habe ein Serverzertifikat, das ich im vertrauenswürdigen Speicher installiert habe. Ich benutze SOAP-UI-Tool und Soap-Sonar, um SSL-Web-Service anzurufen, den ich mit HTTS-Aufruf an den Dienst verwende.2-Wege-SSL-Web-Service-Test
Sieht aus wie Zertifikat nicht durch die Anfrage geht.
Ich habe eine C# -Anwendung erstellen, um die Anfrage mit Zertifikat zu übergeben.
Aber immer noch der gleiche Fehler.
Können Sie andere Tools zum Testen des Webservice vorschlagen? oder Beispielcode?
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;
}
}
Ausnahmen: -
Die Anforderung wurde abgebrochen: Es konnte keine sichere SSL/TLS-Kanal erstellen.
Wenn Sie eine Ausnahme erhalten, bitte posten Sie es –
Ich habe Frage mit Ausnahme aktualisiert. – Prashant
Das hängt wahrscheinlich nicht mit Ihrem Code zusammen. Entweder A: Das Zertifikat des Servers wird von Ihrer Anwendung nicht als vertrauenswürdig eingestuft. oder B: Das Zertifikat des Clients wird vom Server nicht akzeptiert. Überprüfen Sie mit Fiddler, dass Sie wirklich das Zertifikat in der Anfrage übergeben –