gpt4 book ai didi

c# - 使用 C# 访问 Windows 服务证书存储中的 x509 证书

转载 作者:行者123 更新时间:2023-11-30 16:26:14 25 4
gpt4 key购买 nike

我想存储一个 x509 证书以供 Windows 服务使用。我遇到的问题是在哪里存储此证书。似乎使用 Microsoft 管理控制台 (mmc) 证书管理单元,您可以拥有特定于 Windows 服务的证书存储区。问题是我不知道如何通过 C# 获取这些证书。

  • 使用 mmc 和证书管理单元在服务商店下安装了证书。

使用 topshelf 创建并安装了 Windows 服务使用此代码:

var localStore = new X509Store(StoreLocation.LocalMachine); 
localStore.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 c in localStore.Certificates)
{
_log.Debug("local: certificate for {0} - has private key {1}".ToFormat(c.SubjectName.Name, c.HasPrivateKey));
}

var userStore = new X509Store(StoreLocation.CurrentUser);
userStore.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 c in userStore.Certificates)
{
_log.Debug("user: certificate for {0} - has private key {1}".ToFormat(c.SubjectName.Name, c.HasPrivateKey));
}

我从来没有在 Windows 服务的商店中看到证书。如果我将证书添加到本地计算机证书存储区,Windows 服务会看到该证书。

mmc 中用于向服务商店添加证书的所有花哨工具都必须有目的。

最佳答案

Windows 服务在与运行 MMC 时不同的用户帐户下运行,这就是为什么您在 CurrentUser 存储中看不到证书;但确实会在 LocalMachine 商店中看到它。

解决此问题的一种方法是让 Windows 服务以特定用户身份运行,例如“ServiceX”。然后将 MMC 作为“ServiceX”运行并将证书添加到当前用户存储中。

关于c# - 使用 C# 访问 Windows 服务证书存储中的 x509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com