public bool CheckValidationResult(ServicePoint sp,
System.Security.Cryptography.X509Certificates.X509Certificate cert, WebRequest req, int problem)
{
return true;
}
在这里,我可以从Web服务单独使用Tls 1.2访问Web服务。
因此,在方法中返回true之前添加以下行。 , 然后,我可以访问该服务并能够获得响应。
这是处理这些或其他任何方式的正确方法吗? ? ?
请帮助有此经验的人。
先谢谢。
//这里给出协议版本或者运营商接受tls 1.1,1.2和1.0以及ssl3
sp.Expect100Continue = true;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12;
答案 0 :(得分:1)
不,这不是正确的方法!虽然我知道100个开发人员这样做(对于证书验证返回true),但是他们的通信不再安全,现在受到中间人和重放攻击,这是人类已知的最常见的SSL攻击。
事实是,您需要为证书验证提供“全面实施”,该验证基于多个RFC(搜索:X.509证书验证)。您至少需要检查证书的有效性(日期),使用CA的公钥验证主题签名哈希并验证CA的CRL撤销(确保服务器证书未被撤销)。但是......
为了简单起见,在不降低TLS完整性的情况下,您可以简单地检查“问题”(int问题),然后根据问题的值返回true或false。操作系统应根据内部操作系统安全策略设置问题值。就个人而言,我仍然更喜欢“全面实施”,因为操作系统安全策略可能很弱,被淹没或被破坏(被黑客攻击)。如果您需要有关“全面实施”的更多详细信息,请与我们联系