我想存储x509证书供Windows服务使用.我遇到的问题是在哪里存储此证书.似乎使用Microsoft管理控制台(mmc)证书管理单元可以使Windows服务具有特定的证书存储.问题是我无法弄清楚如何通过C#获得这些证书.使用mmc和证书...
我想存储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#访问Windows Service证书存储区中的x509证书
基础教程推荐
- c# – 使dapper SQL成为语法颜色 2023-11-25
- SQL Server 2008 通过C# CLR 使用正则表达式 2023-11-26
- C#中的延时函数sleep 2023-06-14
- Unity中EventTrigger的几种使用操作 2023-04-10
- C#获取Windows10屏幕缩放比例的操作方法 2023-05-11
- unity里获取text中文字宽度并截断省略的操作 2023-04-14
- C#控制台应用(.NET Core)添加System.Windows.Forms失败(未解决) 2023-09-27
- C#并行库Parallel类介绍 2023-06-15
- 浅谈C#在网络波动时防重复提交的方法 2023-01-22
- C#中的var关键字用法介绍 2023-07-04