繁体   English   中英

如何发送带有 UWP 应用程序中附加证书的 RestSharp 请求?

[英]How to send a RestSharp request with a certificate attached in a UWP application?

我创建了一个 .NET Core 控制台应用程序,该应用程序完全符合我的需要:发送带有附加证书的 RestSharp 请求。 一切正常。 这是代码:

        static void Main(string[] args)
    {
        var client = new RestSharp.RestClient();
        client.ClientCertificates = new X509CertificateCollection();
        client.ClientCertificates.Add(new X509Certificate2(@"C:\Users\kid_j\Downloads\badssl.com-client.p12", "badssl.com"));
        var result = client.Execute(new RestSharp.RestRequest("https://client.badssl.com/", RestSharp.Method.GET));
        Console.WriteLine(result.StatusCode);
    }

但是,当我将相同的代码放在 UWP 应用程序中时,它不起作用。 我收到此错误消息:

发送请求时出错。 在个人 (\"MY\") 证书存储中找不到客户端证书。 在 UWP 中,仅当客户端证书已添加到该证书存储时才受支持。

我试过双击证书文件并安装证书,但我仍然遇到同样的问题。

有什么想法吗?

出于绝望,我在应用程序的 package 清单的功能部分启用了Shared User Certificates 有效! 希望这对其他人有帮助!

在此处输入图像描述

正如@daniel 提到的,您需要提供Shared User Certificates 之后,您需要从X509Store获取证书。

List<Certificate> certificatesViews = new List<Certificate> { };
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
for (int i = 0; i < store.Certificates.Count; i++)
{
   X509Certificate2 cert = store.Certificates[i];
   if(cert.SerialNumber=="YourSerial")
   {
     client.ClientCertificates.Add(cert);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM