当前位置: 首页 > 知识库问答 >
问题:

将BouncyCastle X509证书私钥(RSA)导入Windows证书存储

陶沛
2023-03-14

我已经尝试了各种方法,通过导入一个基于BouncyCastle的X509Certificate实例和相关的私钥(RsaPrivateCrtKeyParameters)。NET X509Certificate2一个RSACryptServiceProvider实例,并将其保存到证书存储区(NET的X509Store,My/CurrentUser)。

在证书存储MMC管理单元中,似乎有一个与证书相关联的私钥,我已经验证了在磁盘上的适当位置创建了一个新的密钥容器,但当我尝试导出证书时,我收到了令人担忧的“注意:找不到相关联的私钥。只能导出证书”消息。

如果我运行certutil-user-repairstore我的指纹,我会得到以下错误:

错误:证书公钥与存储的密钥集不匹配

从它吐出的其他信息中,我可以清楚地看到公钥不同,算法参数在证书公钥上等于“05 00”,但在容器公钥上不等于。

事实上,我不知道容器公钥的概念,所以我现在很困惑。有人有这样做的工作代码吗?

共有1个答案

容寒
2023-03-14

我在卡巴丹的回答中找到了解决方案:https://social.msdn.microsoft.com/Forums/vstudio/en-US/ad01b2eb-1890-431a-86ae-e5da0e02b5b0/cryptographicexception-key-does-not-exist-when-attempting-to-connect-to-remote-service

RSACryptoServiceProvider tempRcsp = (RSACryptoServiceProvider)DotNetUtilities.ToRSA((RsaPrivateCrtKeyParameters)keyPair.Private);
  RSACryptoServiceProvider rcsp = new RSACryptoServiceProvider(new CspParameters(1, "Microsoft Strong Cryptographic Provider", new Guid().ToString(), new CryptoKeySecurity(), null));
  rcsp.ImportCspBlob(tempRcsp.ExportCspBlob(true));
  dotnetCertificate2.PrivateKey = rcsp;
// Save the certificate to the X509Store
 类似资料:
  • 我有一个java服务器,它正试图通过SSL连接到外部Ldap服务器(作为客户端来执行查询)。 我在连接时遇到了麻烦,因为他们在连接时发送给我的证书仅在我的本地窗口信任库中受信任,但在java信任库(cacerts)中不存在。 有没有办法告诉Java信任windows信任的任何证书? 或者,有没有一种方法可以将所有受信任的证书从窗口信任库导入到Java的cacerts? 任何想法都将不胜感激。

  • 我们如何加载他们的公钥?

  • null 有什么想法吗?我一筹莫展...任何帮助都将不胜感激。

  • 因此,我正在通过 SAML2.0 为我们的应用程序实现 SSO。我们正在使用 saml2-js,并且我们正在执行 SP 启动的 SSO。 实现已经准备好了,它正在工作,但是有几个部分我还在纠结。 saml2-js要求您在ServiceProvider实例上提供私钥和证书-

  • 小问题:如何使进口证书(pfx)不可出口? 是不支持这种场景还是我们缺少了什么?提前道谢!

  • 我试图让一个运行在Tomcat 6之上的应用程序通过SSL连接到LDAP服务器。 我使用以下方法将服务器的证书导入密钥库: 当我用SSL调试打开启动Tomcat时,根据日志Tomcat正在使用正确的证书文件: 但是,Tomcat没有添加我刚刚导入的证书——cacerts文件中的所有其他证书都会打印到日志中——并且连接失败: 重启Tomcat没有帮助。我已经用keyool-list命令验证了新的证书