我正在创建一个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)
)var withKey = newCert.CopyWithPrivateKey(requestCert.GetRSAPrivateKey());
)withKey
证书添加到“我的商店”(CurrentUser或LocalMachine,以匹配密钥和自签名证书的位置为准)requestCert
从请求存储中删除。所有这些都可以在C#中解决。对于“相同的公共密钥”,最简单的方法是比较newCert.PublicKey和requestCert.PublicKey的Oid,EncodedKeyValue和EncodedParameters属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句