2011-12-21 67 views
2

我通過SSL使用java web服務時遇到問題。 我有兩種方法,一種是.net4.0,另一種是.net2.0。 不幸的是.net4.0的方法不起作用。不過,早期版本(2.0)是否正常工作:以.net2.0和.net4.0編寫的webservice客戶端之間的差異

class Program 
{ 
    static void Main(string[] args) 
    { 
     try 
     { 
      Srv.Service client = new Srv.Service(); 
      X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); 
      store.Open(OpenFlags.ReadOnly); 
      string findValue = "IssuerName"; 
      X509Certificate2Collection certsCollection = store.Certificates.Find(X509FindType.FindByIssuerName, findValue, false); 

      X509Certificate2 cert; 
      if (certsCollection.Count > 0) 
      { 
       cert = certsCollection[0]; 
       client.ClientCertificates.Add(cert); // Only in .net 2.0 
      } 

      client.MethodA(); 

     } 
     catch (Exception e) 
     { 
      string msg = e.Message; 
     } 
    } 
} 

之後,我做了類似的事情在.net4.0客戶端(拋出「無法建立與權威{服務器}爲SSL/TLS安全通道」除外)

class Program 
{ 
    static void Main(string[] args) 
    { 
     try 
     { 
      Srv.ServiceClient srv = new Srv.ServiceClient(); 
      X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); 
      store.Open(OpenFlags.ReadOnly); 
      string findValue = "IssuerName"; 
      X509Certificate2Collection certsCollection = store.Certificates.Find(X509FindType.FindByIssuerName, findValue, false); 

      X509Certificate2 cert; 
      if (certsCollection.Count > 0) 
      { 
       cert = certsCollection[0]; 
       srv.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(); 
       srv.ClientCredentials.ClientCertificate.Certificate = cert; 
      } 

      client.MethodA(); 
     } 
     catch (Exception e) 
     { 
      string msg = e.Message; 
     } 
    } 
} 

爲什麼幾乎相同的代碼工作在2.0和4.0中拋出異常? 或者我在第二個例子中做錯了? 重寫ServicePointManager.ServerCertificateValidationCallback的沒有幫助...

爲什麼我不能添加用戶證書由在4.0加入方法就像是在2.0的框架做了什麼?

編輯: 我沒有使用IIS。我正在使用JBoss託管的webservice。

在第二個例子中我得到以下異常:

無法建立與權威{服務器}爲SSL/TLS安全通道

+0

您使用IIS ..?如果是這樣的.NET 4.0有不同的應用程序池,我幾乎打賭,2.0的人指向.net 2.0框架..我可能會誤.. – MethodMan 2011-12-21 18:40:18

+1

我認爲SSL的證書和證書是兩個不同的東西。 – 2011-12-21 19:42:01

+0

我認爲你是對的。但是,我怎樣才能把客戶端證書寫入客戶端4.0? – user1013552 2011-12-21 20:30:14

回答

相關問題