2012-12-14 191 views
1

假設有一個應用程序需要與多個服務器通信,其中一些服務器處於開發模式並且正在使用自簽名證書。其他服務器正在使用可信的證書。是否可以驗證自簽名證書和可信證書?

是否可以將驗證自簽名證書指紋的技術與正常驗證機制相結合?

Using a self-signed certificate with .NET's HttpWebRequest/Response

說是另一種方式,我想鏈自定義驗證與當自定義一個失敗的正常之一。當以下變量非空且自定義驗證程序返回false時是否會執行默認實現?

ServicePointManager.ServerCertificateValidationCallback 

編輯:其實,看着驗證回調的簽名看起來好像回調發生定期驗證後?任何人都可以驗證是這樣嗎?

bool ValidateServerCertficate(
     object sender, 
     X509Certificate cert, 
     X509Chain chain, 
     SslPolicyErrors sslPolicyErrors); // are errors from the regular validation? 

回答

1

我不認爲你可以調用默認驗證器,但你不必。實現自定義回調並查看SslPolicyErrors枚舉。如果它等於SslPolicyErrors.None,那麼它是一個很好的證書,無論如何都會被驗證。否則,你自定義驗證。

internal static bool ValidateCerts(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
{ 
    if (sslPolicyErrors == SslPolicyErrors.None) 
    { 
     // Good certificate. 
     return true; 
    } 
    //Do custom validation here 
}