我花了一整天的时间尝试在 Windows XP 中导入证书,但总是失败。我做了以下操作:
使用私钥创建证书(无密码):
makecert -sr LocalMachine -ss My -pe -sky exchange -n “CN=TestCert” -a sha1 -sv TestCert.pvk TestCert.cer
然后将证书和私钥一起放入一个pfx文件中:
pvk2pfx.exe -pvk 测试证书.pvk -spc 测试证书.cer -pfx 测试证书.pfx
使用命令行工具导入pfx文件(德语系统):
winhttpcertcfg.exe -I TestCert.pfx -a NT-AUTORITÄT\NETZWERKDInternet ExplorerNST -c LOCAL_MACHINE\My 错误:无法导入 PFX 文件的内容。 请确保文件名和路径, 以及密码都是正确的。
提示:“NT-AUTORITÄT\NETZWERKDInternet ExplorerNST”-->“NT-AUTHORITY\NETWORKSERVICE”
文件名正确,但未设置密码。即使我在步骤 1 中设置了密码(例如“MyPassword”),并在步骤 3 结束时输入:...-p 我的密码
我遇到了同样的错误。然后我尝试在证书控制台(带有证书管理单元的 mmc)中导入。我收到以下错误:“由于您导入了私人凭据,因此系统会要求提供一些服务,因此无法安装。” --> “导入的私钥可能需要未安装的服务供应商”。但是 Microsoft 加密服务已启动并运行。
我还能做什么?
在 Windows Vista 和 Windows 7 上,我运行它时没有遇到这些问题。
我需要此证书来运行 WCF 服务。
答案1
同时,我也找到了问题的原因。
在尝试导入带有私钥的证书的前几天,我更改了存储私钥的位置的目录访问权限。我做了以下事情:
cacls "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Crypto\RSA\MachineKeys" /E /G "NT-AUTORITÄT\NETZWERKDIENST":R
此后,我再也无法导入包含私钥的证书。一旦我撤销此特定访问权限,证书导入即可正常进行。
我不明白,为什么增加访问权限实际上会导致访问权限减少。
不过,我希望这可以帮助遇到同样问题的人。