为了账号安全,请及时绑定邮箱和手机立即绑定

在.NET的HttpWebRequest / Response中使用自签名证书

在.NET的HttpWebRequest / Response中使用自签名证书

C#
SMILET 2019-11-06 10:55:27
我正在尝试连接到使用自签名SSL证书的API。我这样做是使用.NET的HttpWebRequest和HttpWebResponse对象。我得到一个例外:基础连接已关闭:无法为SSL / TLS安全通道建立信任关系。我明白这意味着什么。而且我明白为什么 .NET认为它应该警告我并关闭连接。但是在这种情况下,无论如何,我还是想连接到API,这是该死的中间人攻击。那么,如何为该自签名证书添加例外?还是告诉HttpWebRequest / Response根本不验证证书的方法?我该怎么做?
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

事实证明,如果您只想完全禁用证书验证,则可以在ServicePointManager上更改ServerCertificateValidationCallback,如下所示:


ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

这将验证所有证书(包括无效,过期或自签名的证书)。


查看完整回答
反对 回复 2019-11-06
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

使用代理上的sender参数,可以将Domster答案中使用的验证回调的范围限制为特定请求ServerCertificateValidationCallback。以下简单的作用域类使用此技术临时连接仅对给定请求对象执行的验证回调。


public class ServerCertificateValidationScope : IDisposable

{

    private readonly RemoteCertificateValidationCallback _callback;


    public ServerCertificateValidationScope(object request,

        RemoteCertificateValidationCallback callback)

    {

        var previous = ServicePointManager.ServerCertificateValidationCallback;

        _callback = (sender, certificate, chain, errors) =>

            {

                if (sender == request)

                {

                    return callback(sender, certificate, chain, errors);

                }

                if (previous != null)

                {

                    return previous(sender, certificate, chain, errors);

                }

                return errors == SslPolicyErrors.None;

            };

        ServicePointManager.ServerCertificateValidationCallback += _callback;

    }


    public void Dispose()

    {

        ServicePointManager.ServerCertificateValidationCallback -= _callback;

    }

}

上面的类可用于忽略特定请求的所有证书错误,如下所示:


var request = WebRequest.Create(uri);

using (new ServerCertificateValidationScope(request, delegate { return true; }))

{

    request.GetResponse();

}


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 882 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信