我们有一个PFX文件,当在任何其他Windows系统上使用(Server 2008 R2,7,8)安装正常。 在我的两台服务器上,导入失败,如下所示:
CertUtil: -importPFX command FAILED: 0x80090016 (-2146893802) CertUtil: Keyset does not exist
我们最初导入这个PFX使用MMCpipe理单元,似乎工作,因为没有错误报告和证书显示,它有一个私钥在打开时,但与我们的.NET应用程序,我们得到一个关于没有私钥。 我们假定了私钥的权限,并为我们的应用池添加了正确的权限。 这没有什么区别。 我们已经导入并删除了几次,试图解决这个问题。
现在我们已经注意到,当通过MMC导入时,添加到C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys文件夹中的文件的大小在通常不显示的服务器上仅为79kb在他们工作的系统上是2kb。
我已经对文件进行了MD5检查,所以检查他们是一样的(他们是),我也复制了他们从系统不工作(原来复制文件不是出口),并仍然在其他地方工作。
为什么这会失败?
我们执行的每个Googlesearch都会返回相同的基本答案,这些答案与私钥的权限有关……但这是基于我们所看到的错误消息。
最终,我们使用WinHttpCertCfg.exe和Process Monitorlogging对文件夹和registry的访问后,跟踪了这个问题。
当我们的开发人员添加一些testing证书时,他还更改了C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys文件夹中的安全权限,以便IIS可以访问他导入的证书的私钥,而不是授予通过MMC中的证书pipe理单元的权限。
他只是增加了一个新的权限,并没有改变现有的权限,但这不知怎么的打破了证书的导入。 当额外的权限被删除,它开始再次工作。
非常怀疑别人会有同样的问题,但认为值得回答而不是删除或closures这个问题,因为有一天可能会帮助别人。