如何在自定义validation中调用默认的ServerCertificateValidationCallback?

我想修改.Net的默认ServerCertificateValidationCallback以validation我公司的一些证书是真的,但保留其他证书的默认validation。

我似乎无法这样做,因为默认的ServerCertificateValidationCallback值为null。

 ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => validCertificatesSerialNumbers.Contains(certificate.GetSerialNumberString()) || defaultlCallback.Invoke(sender, certificate, chain, sslPolicyErrors) //How do I set defaultCallback? ; 

谢谢

从我在参考资料中可以看出,这是回调发挥作用的地方:

 if (ServicePointManager.ServerCertificateValidationCallback != null) { useDefault = false; return ServicePointManager.ServerCertValidationCallback. Invoke(m_Request, certificate, chain, sslPolicyErrors); } if (useDefault) return sslPolicyErrors == SslPolicyErrors.None; 

这意味着validation已经执行并且知道它是否通过您只需要检查sslPolicyErrors参数。 你会这样做:

 ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => validCertificatesSerialNumbers.Contains(certificate.GetSerialNumberString()) || (sslPolicyErrors == SslPolicyErrors.None);