【问题标题】:Certificate Pinning on UWPUWP 上的证书固定
【发布时间】:2019-02-16 17:32:59
【问题描述】:

我们有一个 Xamarin.Forms 项目,当前使用 .NET Standard 2.0 为共享项目编译 AndroidiOSUWP

通过WCF 服务合同进行通信。

为了固定证书,我们按照示例实现了以下代码。在确保在其项目属性下使用必要的 HttpClient 实现之后,这在 AndroidiOS 上正常工作。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;

private bool ValidateServerCertificate(object sender,
                                       X509Certificate certificate,
                                       X509Chain chain,
                                       SslPolicyErrors sslPolicyErrors)
{
    // Make sure we have a certificate to check.
    if (certificate == null)
    {
        return false;
    }

    if (sslPolicyErrors != SslPolicyErrors.None)
    {
        return false;
    }

    return this.KnownKeys.Contains(certificate.GetCertHashString(), 
                                   StringComparer.Ordinal);
}

UWP 然而被证明是相当顽固的。我无法在通信的任何阶段触发回调。

我还考虑实现我们自己的 X509CertificateValidator 并将其提供给 WCF 配置,但这也无济于事。

问题

  1. 我是否需要/是否能够在 UWP 下指定 HttpClient 实现,就像为 AndroidiOS 指定的那样可以解决此问题?
  2. 我目前还缺少其他方法吗?

【问题讨论】:

  • 而不是ServicePointManager.ServerCertificateValidationCallback,用System.Net.Http.HttpClientServerCertificateCustomValidationCallback怎么样?
  • @HappyNomad 你的意思是HttpClientHandlers ServerCertificateCustomValidationCallback。如果是这样,我很确定我们确实尝试过,但没有效果。
  • @HappyNomad 谢谢

标签: c# wcf xamarin.forms xamarin.uwp certificate-pinning


【解决方案1】:

我建议您在 UWP 应用程序中使用 Windows.Web.Http Namespace 中的 HttpBaseProtocolFilter 类。使用HttpBaseProtocolFilter 实例,您可以订阅HttpBaseProtocolFilter.ServerCustomValidationRequested 事件。在此事件处理程序中,您可以对服务器 SSL 证书执行额外的验证(除了操作系统默认)。

【讨论】:

  • 谢谢你,但如果我是正确的并且事情还没有从这些帖子中继续下去:msdnstackoverflow 那么我无法使用生成的 WCF 服务合同代码来实现我所需要的并且必须直接使用HttpClient
  • 有一个blog,里面包含了使用HttpClient实现证书pinning的详细代码,你可以试试。
  • 好的,谢谢!虽然答案并没有完全涵盖我需要您评论中提到的博客文章的内容。
猜你喜欢
  • 1970-01-01
  • 2017-08-26
  • 2018-10-28
  • 2018-02-20
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多