WinHttpCertCfg 未导入证书

WinHttpCertCfg 未导入证书

我需要设置一个部署脚本来导入我的服务使用的 SSL 证书。我尝试使用 WinHttpCertCfg 和 CertMgr 导入,但无济于事。

以下是我尝试使用的命令行参数:

winhttpcertcfg.exe -i <certname>.pfx -c LOCAL_MACHINE\My -p <password> -a <user service runs as>

CertMgr.exe -add -all -s -r localMachine -c <cert name> My

根据我的调查,CertMgr 不允许您使用密码导入证书,因此我宁愿让 winhttpcertcfg 工作。

当我运行它们时,我得到以下输出:WinHttpCertCfg:

Microsoft (R) WinHTTP Certificate Configuration Tool
Copyright (C) Microsoft Corporation 2001.

证书管理器:

CertMgr Succeeded

但是,当我在 MMC 中查看本地机器证书、尝试从我的服务中加载它们、或通过 winhttpcertcfg 列出它们,甚至查看 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\MY\Certificates 中的注册表时,都找不到它们。

我已尝试以下所有方法:

  • 如果我手动安装证书(通过 CertMgr.msc 对话框),它就可以起作用。
  • 安装的用户以管理员身份运行
  • 安装用户对证书具有完全访问权限
  • 当出现错误(密码错误)时,工具会打印出错误
  • 在多台机器上尝试过(所有机器都是服务器 2008 R2)

至此,我已经没有任何主意了。

谢谢。

答案1

总是有CertUtil.exe:

CertUtil -p Password -ImportPFX File.pfx

欲了解更多选项,请参见此处:
http://technet.microsoft.com/en-us/library/cc732443.aspx

或者尝试:

CertUtil -ImportPFX -?

答案2

我找到了答案:

事实证明,winhttpcertcfg 用于安装证书和 Win 2008 的库后端存在问题。还有一种替代方法,即使用 Powershell 安装证书。您可以编写一个脚本来使用 x509Certificate2 .NET 类并将证书导入您想要的任何存储。此方法还为您提供了更大的灵活性来执行所需的任何额外检查。

更多细节这里

相关内容