我正在创建一个将证书导入本地存储的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的功能也会很棒)
发布于 2019-05-19 01:19:55
certreq -accept的流程是:
new X509Store("Request", StoreLocation.LocalMachine))var withKey = newCert.CopyWithPrivateKey(requestCert.GetRSAPrivateKey());)withKey证书添加到我的存储区(CurrentUser,或LocalMachine,与密钥和自签名证书匹配的哪个)requestCert。所有这些问题在C#中都是可解的。对于“相同的公钥”,最简单的方法是比较newCert.PublicKey和requestCert.PublicKey的Oid、EncodedParameters和requestCert.PublicKey属性。
https://stackoverflow.com/questions/56202964
复制相似问题