如何使用Universal Windows App中的System.Net.Http.HttpClient忽略自签名证书

Geo*_* Jr 6 self-signed portable-class-library dotnet-httpclient uwp

我正在创建一个可移植类库,这意味着我必须使用System.Net.Http.HttpClient来调用我的Web API.据我所知.挑战在于,对于我的通用Windows应用程序,我无法弄清楚如何忽略由于API服务器可以拥有自签名证书而返回的错误.任何建议将不胜感激.

更新:我无法导入任何证书,因为这将是在各种组织中的各种设备上运行的应用程序,并且让他们将自签名证书导入到运行该应用程序的每个设备上是不切实际的.

kie*_*wic 4

不是一个选项,因为System.Net.ServicePointManager.CertificatePolicy在 UWP 中不可用。如果您使用 Windows.Web.Http.HttpClient相反的方式,那么您可以忽略自签名证书

更新:

再想一想,如果将自签名证书添加到应用程序的根证书中,则可以忽略自签名证书错误。

两种选择:

  • 使用 API 安装它:

    IBuffer buffer = await FileIO.ReadBufferAsync(file);
    Certificate rootCert = new Certificate(buffer); 
    CertificateStore rootStore = CertificateStores.TrustedRootCertificationAuthorities;
    rootStore.Add(rootCert);
    
    Run Code Online (Sandbox Code Playgroud)
  • 将其包含在Package.appxmanifest >声明>证书>添加并设置中:

    • 店铺名称: 根
    • 内容:证书文件的路径

使用这两个选项中的任何一个,您将不再获得:

System.Net.WebException:底层连接已关闭:无法建立 SSL/TLS 安全通道的信任关系。---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。