2016-06-09 16 views
1

我想調用ssl web服務。我有安裝在可信存儲區中的服務器證書。 我正在使用SOAP UI工具和soap sonar來調用我使用htts調用服務的ssl web服務。2路ssl web服務測試

看起來像證書沒有通過請求。

我已經創建了一個C#應用程序來傳遞帶有證書的請求。

但仍然是一樣的錯誤。

你能推薦任何其他工具來測試webservice嗎?或示例代碼?

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

我更新了異常問題。 – Prashant

+1

這可能與您的代碼無關。 A:服務器的證書不被您的應用程序信任;或B:您的客戶的證書不被服務器接受。檢查與提琴手,你真的通過證書請求 –

回答

0

要設置一個HTTP地址:

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

Web客戶端將永遠不會通過HTTPS證書到HTTP地址。
您的地址應該是這樣的:

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

是的,我用https嘗試過。但我得到了相同的結果 – Prashant

+0

@Prashant你確定Web服務器支持HTTPS在你嘗試聯繫的端口/地址嗎? –

+0

是的,我證實了... – Prashant

0

我解決了這個問題,通過 我的證書不具有私鑰,所以我創建並再次進行安裝。 (how to create a private key) 之後,我可以連接。

感謝您的幫助。