作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法让用户为他们的服务器创建真正的证书,但我想做一些安全检查。所以以下内容太轻了,因为在我阅读时,没有对证书进行检查。
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
最佳答案
如果您使用自签名证书,那么您应该期望的唯一错误是根(证书颁发者)上的链错误。我会建议这样的事情,专门针对该链错误进行陷阱,并让所有其他错误都失败。
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(
ValidateRemoteCertificate
);
private static bool ValidateRemoteCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors )
{
string trustedIssuer = "CN=www.domain.com";
string trustedDomain = "CN=www.domain.com";
bool policyErr = false;
switch (policyErrors)
{
case SslPolicyErrors.None:
policyErr |= false;
break;
case SslPolicyErrors.RemoteCertificateChainErrors:
bool chainErr = false;
foreach (X509ChainStatus status in chain.ChainStatus)
{
switch (status.Status)
{
case X509ChainStatusFlags.NoError:
chainErr |= false;
break;
case X509ChainStatusFlags.UntrustedRoot:
if (certificate.Subject != trustedDomain || certificate.Issuer != trustedIssuer)
chainErr |= true;
else
chainErr |= false;
break;
default:
chainErr |= true;
break;
}
}
policyErr |= chainErr;
break;
default:
policyErr |= true;
break;
}
return !policyErr;
}
关于.Net 编程 : What to validate on an SSL self-signed certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189897/
我是一名优秀的程序员,十分优秀!