public bool CheckValidationResult(ServicePoint sp,
System.Security.Cryptography.X509Certificates.X509Certificate cert, WebRequest req, int problem)
{
return true;
}在这里,我可以仅使用Tls 1.2从web服务访问web服务。
因此,在方法中的return true之前添加以下行之后。,然后,我可以访问服务,也可以获得响应。
这是正确的方式处理这些或任何其他方式吗???
请帮助任何有这方面经验的人。
提前谢谢。
//此处给定协议版本,或操作员接受TLS1.1、1.2和1.0以及ssl3
sp.Expect100Continue = true;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12; 发布于 2017-03-25 01:43:06
不,这不是正确的方式!虽然我知道100%的开发人员都这样做(证书验证返回true ),但他们的通信不再安全,现在受到中间人和重放攻击,这是人类已知的最常见的SSL攻击。
事实是,您需要为证书验证提供一个“全面的实现”,它基于几个RFC(搜索: X.509 certificate validation)。您至少需要检查证书的有效性(日期),使用CA的公钥验证主题签名散列,并验证CA的CRL吊销(确保服务器证书未吊销)。然而..。
为了简单起见,在不降低TLS完整性的情况下,您可以简单地检查“问题”(int问题),然后根据问题的值返回true或false。操作系统应根据内部操作系统安全策略设置问题值。就我个人而言,我仍然倾向于“全面实现”,因为操作系统安全策略可能是软弱的、被淹没的或被破坏(黑客)的。如果你需要更多关于“全面实施”的细节,请告诉我。
https://stackoverflow.com/questions/36249513
复制相似问题