windows-phone-8.1 C 升级到最新Windows Phone 8.1后无法发送证书
我有一个为8.1创建的Windows Phone应用程序,其中一个任务是客户端 C 服务器证书方案。我的应用程序工作正常,我可以发送客户端证书并登录到服务器。但升级到Windows 8.10.14xxxx之后是不可能的。我拿了wirehark的踪迹,似乎证书从不发送。
我使用HttpClient.SendAsync(await)和HttpBaseProtocolFilter输入证书。升级前它工作完美。 任何想法?有什么坏处吗 首先我正在安装pfx async private void btnInstall_Click(object sender,RoutedEventArgs e) { //Install the self signed client cert to the user certificate store string CACertificate = null; try { Uri uri = new Uri("ms-appx:///certificates/test.pfx"); var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri); IBuffer buffer = await FileIO.ReadBufferAsync(file); using (DataReader dataReader = DataReader.FromBuffer(buffer)) { byte[] bytes = new byte[buffer.Length]; dataReader.ReadBytes(bytes); // convert to Base64 for using with ImportPfx CACertificate = System.Convert.ToBase64String(bytes); } await CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync( CACertificate,"xxxxx",ExportOption.Exportable,KeyProtectionLevel.NoConsent,InstallOptions.None,"ClientCert1"); } catch (Exception ex) { //; } }然后我打电话给这个服务 string serviceURL = "https://my.web.services"; Certificate cert = null; CertificateQuery query = new CertificateQuery(); query.FriendlyName = "ClientCert1"; IReadOnlyCollection<Certificate> certs = await CertificateStores.FindAllAsync(query); HttpBaseProtocolFilter bpf = new HttpBaseProtocolFilter(); //if you install the CA you don't need to ignore the ServerCertificate Errors //bpf.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted); if (certs.Count > 0) { cert = certs.ElementAt(0); bpf.ClientCertificate = cert; } HttpClient httpClient = new HttpClient(bpf); try { var response = await httpClient.GetInputStreamAsync(new Uri(serviceURL)); //take data } catch (Exception ex) { //0x80072F0D }在8.10.14xxxx Windows Phone中运行时,我总是采取一个例外(0x80072F0D)。我的代码在更新之前工作,现在我总是使用这个返回码。证书被加载到httpClient中。当我用调试器停止应用程序似乎证书在那里,但是0x800072F0D可能意味着证书没有发送? 在场景中有一个中间证书颁发机构。该证书包含在pfx中。我需要安装吗? 我假设您已经将客户端证书放在应用程序证书存储中。如果不这样做: 1)下载PFX文件。 2)通过以下方式将证书安装在应用程序的证书库中 await CertificateEnrollmentManager.ImportPfxDataAsync(certString,"Your_PFX_Password",friendlyName); 3)检查证书库中的证书。 CertificateQuery certQuery = new CertificateQuery(); certQuery.FriendlyName = friendlyName; IReadOnlyList<Certificate> certs = await CertificateStores.FindAllAsync(certQuery);证书[0]应该有你需要的证书。 4)现在,将证书附加到HTTP请求 HttpBaseProtocolFilter protolFilter = new HttpBaseProtocolFilter(); protolFilter.ClientCertificate = certs[0] //from previous step HttpClient client = new HttpClient(protolFilter)PS:你不应该使用System.Net.htpp.HttpClient。而不是应该使用Windows.Web.Http.HttpClient。 (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 批处理文件 – 以编程方式更改和刷新图标(无需重新启动)
- windows – 通过PowerShell运行.cmd文件
- jboss7.x C 无法登录到windows上的jboss 7.1管理控制台
- win10电脑锁屏壁纸自动更换失败情况如何处理
- 02、Windows Server 2003域账户管理(02)
- 告诉你win11 屏幕颜色怎么调回正常
- Microsoft Unit Testing Framework for C++
- windows-phone-8.1 – 如何检测在Windows 10 Mobile上启动的
- wpf – 使用WiX在应用程序的主要升级中从Windows 7任务栏中
- 飞溅屏幕 – 通用窗口10个应用程序的Splash屏幕
- node-ffi模块的安装以及基于electron生成windows
- pyshark无法在Windows 7(python)上捕获数据包
- haskell – 用于Windows的Linux主机上的GHC交叉编
- windows – CFileDialog :: OnInitDialog()不调用
- Microsoft Dynamics(Navision)vs C#.NET
- .net – 可以按需下载先决条件的好安装程序
- Windows系统DOS命令之多线程技术
- windows修改PowerShell(命令提示符)默认中文编
- npm ERR!注册表错误解析json C 尝试在Windows 8
- 如何控制Windows中打印机的打印机托盘选择