我正在创建一个可移植类库,这意味着据我所知,我必须使用 System.Net.Http.HttpClient 来调用我的 Web API。挑战在于,对于我的通用 Windows 应用程序,我无法弄清楚如何忽略由于 API 服务器可以拥有自签名证书而返回的错误。任何建议将不胜感激。
更新:我无法导入任何证书,因为这将是一个在不同组织的不同设备上运行的应用程序,让它们将自签名证书导入到运行该应用程序的每个设备上是不切实际的。
从此不再是一个选择System.Net.ServicePointManager.CertificatePolicy
在 UWP 中不可用。如果你使用Windows.Web.Http.HttpClient
相反,那么你可以忽略自签名证书 https://stackoverflow.com/questions/23868488/windows-store-apps-the-host-name-in-the-certificate-is-invalid-or-does-not-matc/23875601#23875601.
UPDATE:
再想一想,如果将自签名证书添加到应用程序的根证书中,则可以忽略自签名证书错误。
两种选择:
-
使用 API 安装它:
IBuffer buffer = await FileIO.ReadBufferAsync(file);
Certificate rootCert = new Certificate(buffer);
CertificateStore rootStore = CertificateStores.TrustedRootCertificationAuthorities;
rootStore.Add(rootCert);
-
将它纳入你的内心包.appxmanifest > 声明 > 证书 > Add并设置:
使用这两个选项中的任何一个,您将不再获得:
System.Net.WebException:底层连接已关闭:无法建立 SSL/TLS 安全通道的信任关系。 ---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)