UWP 使用SSL证书,保证数据安全

Posted hupo376787

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UWP 使用SSL证书,保证数据安全相关的知识,希望对你有一定的参考价值。

事情是这样的,我们后端的小伙伴升级了用户会员系统,使用了全新的GraphQL登录机制,并且采用SSL加密的方式来实现阻止陌生客户端请求的案例。

GraphQL在UWP端的实现,以后有时间会单独写一篇文章,这里先说一下怎么在UWP里面使用SSL证书的问题。

 

其实接这个任务也是一个临时调研的,毕竟企业级SSL证书需要花钱买,而我们只是在内部先做一下,测试。

然后后端小伙伴给了一个测试的证书,并且导出了各种格式。

技术图片

 

毕竟我对这个领域完全陌生,就像前面提到的那个GraphQL一样,蒙圈的那种。

但是工作还是要继续的,于是Google一顿猛于虎的搜索??,终于找到了一些指引。

1. 添加Capabilities

 勾选 Shared User Certificates

技术图片

 

 

2. 添加Declarations

Available Declarations里面选择Certificates,然后点击Add即可。

这一步需要注意,网上有的教程说需要勾选 Exclusive trust。还要在最底下Certificates,点击Add New,设置Store name以及Content。

看你需要吧,我没做。也不懂这是干嘛的。??

 技术图片

 

 

3. 添加SSL证书文件

 右击解决方案,选择你的SSL证书,并且把Build Action改为Content

UWP里面我尝试了pfx和p12格式的,均可以正常使用。

其他的证书格式未验证。

技术图片

 

 

4. 添加HttpClient代码

 

        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
//Wrong method to import cert
//StorageFile certificateFile = await Package.Current.InstalledLocation.GetFileAsync(@"client.p12"); //IBuffer certificateBuffer = await FileIO.ReadBufferAsync(certificateFile); //string encodedCertificate = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(certificateBuffer); //await CertificateEnrollmentManager.ImportPfxDataAsync(encodedCertificate, "000000", ExportOption.NotExportable, KeyProtectionLevel.NoConsent, InstallOptions.None, "Client Certificate");
//Better use it this way. Add cert to HttpClientHandler var handler = new HttpClientHandler(); handler.ClientCertificateOptions = ClientCertificateOption.Manual; X509Certificate2 cer = new X509Certificate2(File.ReadAllBytes("client.pfx"), "000000"); handler.ClientCertificates.Add(cer); HttpClient client = new HttpClient(handler); HttpResponseMessage response = await client.GetAsync("https://test.client.ssl/"); //HttpResponseMessage response = await client.GetAsync("https://192.168.101.99/"); response.EnsureSuccessStatusCode(); string temp = await response.Content.ReadAsStringAsync(); }

然后别忘了添加引用

using System;
using System.IO;
using System.Net.Http;
using System.Security.Cryptography.X509Certificates;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

 

 

 5. Done!!!

如果成功访问指定的ip,并且获取到了数据的话,那么说明完成了。

以上是关于UWP 使用SSL证书,保证数据安全的主要内容,如果未能解决你的问题,请参考以下文章

SSL证书真的能保障网站安全吗?

什么是自签名SSL证书?

SSL证书是如何保证网站安全的

JDK自带工具keytool生成ssl证书(web服务https配置)

charles3.11.2需要怎么安装ssl证书

哪位大神知道SSL Cert是啥?