不能使用商店中安装的证书作为服务器端证书

can't use certificates installed in the store as server-side certificates

我正在 UWP 中开发一个用作服务器的应用程序,我制作了一个自签名证书并将其安装在服务器和客户端上,我检查了证书是否有私钥并且确实有,当我以编程方式从商店检索它时,它会加载私钥,但由于某种原因,当身份验证握手开始时,服务器说“提供给包的凭据未被识别”,唯一有效的方法是当我得到来自文件夹的 PFX 证书...

这个有效:

Selectedcert = new X509Certificate2("LocalCertificate.pfx","password", X509KeyStorageFlags.UserKeySet);

这不是:

X509Store store = new X509Store(StoreName.Root,StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection cers = 
store.Certificates.Find(X509FindType.FindByIssuerName, "localhost", false);
X509Certificate2 Selectedcert = null;
foreach (var c in cers)
   if (c.HasPrivateKey && c.PrivateKey != null)
       Selectedcert = c;

我检查了清单并且应用程序具有共享用户证书的功能我还检查了证书权限并且用户确实具有读取私钥的权限

编辑:

我在控制台应用程序中尝试了相同的代码并且身份验证握手正常,所以问题出在 UWP 限制上,它不允许应用程序使用私钥或类似的东西 我不知道如何在 UWP 中获得 X509Cert 如果有人知道请告诉我,谢谢 :)

我认为问题在于 UWP 应用 运行 在沙盒中,因此在尝试访问本地主机时存在限制。所以在你的场景中,你无法获得证书。

更新:

sharedUserCertificates 适用于 UserCertificateStore Class and CertificateStores Class. You could check the official sample -UserCertificateStore 等 UWP API,以了解这些 API 如何从证书存储中获取证书。