假设有一个应用程序需要与多个服务器通信,某些服务器处于开发模式并且正在使用自签名证书。其他服务器使用的是正版证书。
是否可以将这样的技术与正常的验证机制相结合,验证自签名证书的指纹?
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?
答案 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
}