是否可以验证自签名和真实证书?

时间:2012-12-14 01:04:51

标签: c# ssl httpwebrequest ssl-certificate

假设有一个应用程序需要与多个服务器通信,某些服务器处于开发模式并且正在使用自签名证书。其他服务器使用的是正版证书。

是否可以将这样的技术与正常的验证机制相结合,验证自签名证书的指纹?

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

换句话说,我想在自定义验证失败时将自定义验证与正常验证链接起来。当以下变量为非null并且自定义验证程序返回false时,是否会发生默认实现?

ServicePointManager.ServerCertificateValidationCallback

编辑:实际上,查看验证回调的签名,看起来好像在定期验证后回调是否正在发生?任何人都可以验证是这种情况吗?

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

1 个答案:

答案 0 :(得分: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
}