【问题标题】:C# Certificate PinningC# 证书固定
【发布时间】:2018-10-28 05:59:21
【问题描述】:

如何最好地验证 WebClient 中的证书?

目前我有这个:

class SafeClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);

        byte[] embeddedCert;
        using (Stream certStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Test.Resources.test.pfx"))
        {
            embeddedCert = new byte[certStream.Length];
            certStream.Read(embeddedCert, 0, (int)certStream.Length);
        }

        var cert = new X509Certificate2(embeddedCert, "Pass");

        (request as HttpWebRequest).ClientCertificates.Add(cert);

        return request;
    }
}

但是我如何检查服务器响应中的证书。我不希望任何人都可以读/写响应/请求白查尔斯或...

提前感谢您和来自德国的问候。

【问题讨论】:

    标签: c# validation ssl certificate webclient


    【解决方案1】:

    如果我正确理解您的目的,您希望在提出请求后获取有关服务器证书的信息。

    为此 HttpWebRequest 提供一个特殊的委托。 HttpWebRequest.ServerCertificateValidationCallback

    因此,您的代码可能如下所示:

    var request = (HttpWebRequest)WebRequest.Create("https://");
    request.ServerCertificateValidationCallback += (sender, cert, chain, error) =>
    {
        //TODO:implement your custom logic
    };
    

    我希望,此链接也对您有用。 ServicePointManager.ServerCertificateValidationCallback Property

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2019-10-03
      • 2018-12-12
      • 2019-02-16
      相关资源
      最近更新 更多