【问题标题】:Unable to request server because invalid or expired ssl - how to ignore? [duplicate]由于 SSL 无效或过期而无法请求服务器 - 如何忽略? [复制]
【发布时间】:2019-12-20 15:51:09
【问题描述】:

我正在尝试向服务器发出请求,但是我的服务器是使用自定义 ssl openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes 设置的,但是如何设置类似于 python requests.get(url,verify=false) 的虚假验证 ssl

客户

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    using (Stream stream = response.GetResponseStream())
    {
        using (StreamReader reader = new StreamReader(stream))
        {
            html = reader.ReadToEnd();
            Console.WriteLine(html);
        }
    }
}

【问题讨论】:

  • 您可以添加一些逻辑而不是跳过所有验证。您可能需要检查验证错误并仅在证书过期但引发其他错误时才忽略它

标签: c# ssl-certificate


【解决方案1】:

您可以在代码中添加以下内容:

request.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

所以最终结果是:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        html = reader.ReadToEnd();
                        Console.WriteLine(html);
                    }
                }
            }

【讨论】:

    猜你喜欢
    • 2018-12-27
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多