首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以使用-accept获得命令行certreq -accept的功能?

有没有一种方法可以使用-accept获得命令行certreq -accept的功能?
EN

Stack Overflow用户
提问于 2019-05-18 21:25:15
回答 1查看 387关注 0票数 2

我正在创建一个将证书导入本地存储的windows窗体应用程序--我想要做的是在可能的情况下让它与现有的私钥配对。

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

代码语言:javascript
复制
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的功能也会很棒)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-19 01:19:55

certreq -accept的流程是:

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56202964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档