如何在自定义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);