【问题标题】:Client Certificates Windows Phone 8.1客户端证书 Windows Phone 8.1
【发布时间】:2014-07-15 17:24:54
【问题描述】:
Windows Phone 8.1 是否支持向 HTTP Web 请求添加客户端证书?我正在尝试做类似以下的事情,但我似乎无法确定 WP8.1 上的内容(如果有的话)与此等价:
System.Net.HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ClientCertificates.Add(certificate);
谢谢。
【问题讨论】:
标签:
windows
windows-phone
windows-phone-8.1
【解决方案1】:
我假设您已经将客户端证书放入应用证书商店。如果不是,这就是你必须这样做的方式
1) 下载 PFX 文件。
2)使用以下方式将其安装在App的证书存储中
await CertificateEnrollmentManager.ImportPfxDataAsync(certString, "Your_PFX_Password", ExportOption.Exportable, KeyProtectionLevel.NoConsent, InstallOptions.None, friendlyName);
3) 下一步是在证书存储中查找证书。这是按如下方式完成的
CertificateQuery certQuery = new CertificateQuery();
certQuery.FriendlyName = friendlyName;
IReadOnlyList<Certificate> certs = await CertificateStores.FindAllAsync(certQuery)
certs[0] 将拥有证书
4) 将证书附加到 HTTP 请求
HttpBaseProtocolFilter protolFilter = new HttpBaseProtocolFilter();
protolFilter.ClientCertificate = certs[0] //from previous step
HttpClient client = new HttpClient(protolFilter)
要注意的是你不应该使用 System.Net.htpp.HttpClient。相反,您应该使用 Windows.Web.Http.HttpClient。