【问题标题】:working with certificates for server connection使用证书进行服务器连接
【发布时间】:2016-08-15 18:00:16
【问题描述】:

我试图将代码从控制台应用程序传输到 uwp,在此控制台应用程序中使用了使用所有证书的 ServicePointManager,在 uwp 应用程序中我不使用它们并且有文本异常 - “无法建立与服务器的连接”。

问题是 - 我如何替换 ServicePointManager 并在 uwp 中应用所有证书(因为我不知道该服务器使用什么类型的证书)。

ServicePointManager的代码如下:

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback
(bypassAllCertificateStuff); 

private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
  return true;
}

感谢回复!

【问题讨论】:

  • 您发布的 ServicePointManager 代码是否来自以前使用的控制台应用程序?

标签: c# uwp


【解决方案1】:

我认为您正在尝试使用HttpClient,如果这是来自Windows.Web.Http 命名空间,您可以向它添加一个过滤器,其中可以绕过某种证书错误。 例如:

using Windows.Web.Http;
using Windows.Web.Http.Filters;

var filter = new HttpBaseProtocolFilter();
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
var httpClient = new HttpClient(filter);

【讨论】:

    【解决方案2】:

    您为ServicePointManager 发布的代码指示客户端忽略服务器证书验证错误。因此,如果您的服务器证书将过期,或者如果它被颁发给不同的主机,或者如果它是由您的客户端计算机不知道的证书颁发机构签名的 - 您的调用代码将不在乎并继续与该服务器通信。根据您的要求,禁用该验证可能是一个明智的决定,也可能不是。但是,如果您确实想禁用验证,并且使用 System.Net.Http.HttpClient,您可以在 StackOverflow 上使用 check this answer

    另外,请记住,您可以在 UWP 应用程序中使用两个 HTTP 客户端。两者对比见this link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 2011-01-12
      • 2013-01-04
      相关资源
      最近更新 更多