有没有办法使用C#获得命令行certreq -accept的功能?

史蒂文·汉森

我正在创建一个Windows窗体应用程序,该程序将证书导入本地商店-我想要做的是在可能的情况下将其与现有私钥配对。

我知道这是可能的,因为我可以在证书上手动使用certreq -accept命令,并将它配对就可以了。

X509Certificate2 certificate = new X509Certificate2(fileName);
X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
certStore.Open(OpenFlags.ReadWrite);
certStore.Add(certificate);
certStore.Close();

代码效果很好-只是没有将其与对应的私钥匹配,我知道这是存在的,因为命令行certreq -accept可以导入并匹配它。如果有人知道如何使用代码来匹配该功能(不在代码中运行命令行),我将不胜感激。

(旁注-获得certutil -repairstore的功能也很好)

巴顿

的流程certreq -accept是:

  • 打开请求存储(例如new X509Store("Request", StoreLocation.LocalMachine)
  • 查找使用与签名证书相同的公钥的自签名证书(该证书是由certreq创建的)
  • 将私钥复制到新证书(例如var withKey = newCert.CopyWithPrivateKey(requestCert.GetRSAPrivateKey());
  • withKey证书添加到“我的商店”(CurrentUser或LocalMachine,以匹配密钥和自签名证书的位置为准)
  • requestCert从请求存储中删除

所有这些都可以在C#中解决。对于“相同的公共密钥”,最简单的方法是比较newCert.PublicKey和requestCert.PublicKey的Oid,EncodedKeyValue和EncodedParameters属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法使此功能更快?(C)

有没有办法通过 Python xlwings 使用 Excel 工作表功能区中的命令/功能?

Bash,有没有办法获得与双引号相同的功能而不使用双引号

有没有办法在MonetDB中获得FIND_IN_SET功能

有没有办法以编程方式获得Metal中特定功能的限制?

有没有办法扭转特定功能的处理?

有没有办法打印功能接口?

有没有办法反思Lua中的功能?

有没有办法记录功能参数的参数?

有没有办法指定要覆盖的功能?

有没有办法等到功能完成?

有没有办法使您的功能“冷却”?

有没有办法停止已启动的功能?

有没有办法从命令行或代码中获得Objective-C版本?

有没有办法找到交流程序中使用的所有功能?

有没有办法使用装饰器“@property”获取类的所有功能?

有没有办法在 EJS 中使用本机浏览器功能 fetch?

有没有办法在PHP双引号字符串使用功能?

有没有办法防止发出的LLVM IR删除未使用的功能?

有没有办法在浏览器中使用fs同步功能?

有没有办法使用钩子来改善功能组件?

有没有办法防止使用依赖项提供的特定功能?

有没有办法在Tkinter中使用功能区工具栏?

有没有办法显示SML包/库的每个功能?我正在使用PolyML

有没有办法在Django应用程序之外使用反向功能?

有没有办法使用amdgpu pro启用撕裂功能?

有没有办法使用 react js 前端来调用烧瓶安全功能?

有没有办法在网络浏览器中获得ML Kit的功能?

有没有办法获取C#中F#的构造函数参数是自动不可变的私有成员功能?