繁体   English   中英

无法导入具有私钥的证书pfx从Windows Server 2012上的.net c#3.5存储

[英]Cannot import certificate pfx with private key to store from .net c# 3.5 on windows server 2012

我正在尝试从pfx文件中加载带有私钥的证书,并将其导入到LocalMachine / My(个人)证书存储中。 我的代码工作正常,但当我在商店中查看证书时说

“找不到关联的私钥”

而且,certutil说

“找不到用于解密的证书和私钥”

奇怪的是,我的代码在Windows 7开发盒上工作正常,但在Windows Server 2008 R2或2012上却无法正常工作。同样奇怪的是,如果我使用mmc手动导入pfx文件,则私钥似乎可以正常保存。

这是我用来加载文件和导入的代码:

// load the certificate from pfx file
X509Certificate2 cert = new X509Certificate2(filePath, pfxPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

// import to the store
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite); //tried MaxAllowed as well
store.Add(caCert);
store.Close();

有任何想法吗? 有关背景信息,我还在较早的步骤中使用BouncyCastle在代码中生成证书。 我遇到了一些问题,在该步骤持续私钥但从回答解决了这个问题 另外,尝试导入的代码也以管理员身份运行。

距此问题有一点时间,这帮助我完善了调查范围。 我在中跟踪了导入证书的私钥文件

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
并发现该文件没有所有者,也没有设置权限(甚至对于管理员或系统也没有)。 在商店中查看证书时,手动修改这些权限会导致“关联私钥”消息消失。

这导致我在尝试将其导入商店之前修改代码以设置对私钥的权限: https : //stackoverflow.com/a/4902009/332610

万岁!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM