【问题标题】:How to get certmgr to add pfx for all users instead of the current user?如何让 certmgr 为所有用户而不是当前用户添加 pfx?
【发布时间】:2012-06-24 08:26:24
【问题描述】:

我正在开发一个 WCF 服务,它使用 SSL 证书来保证传输安全。

我按照网上的各种教程和提示来生成和导入证书。使用以下命令导入证书:

certmgr.exe -add -all -c <filename>.pfx -s -r localMachine my

我的 WCF 服务在控制台模式下使用导入的证书运行良好。当我将我的服务切换为使用作为“网络服务”运行的 Windows 服务托管时,问题就开始了。例外是抱怨应用程序无权访问已安装的私钥。

于是我使用了FindPrivateKey.exe,发现私钥其实是安装在当前用户的AppData文件夹中的:

C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-3289377140-263254259-3378496556-1105\d3a0de64e6f0513692d593a77a71d3ac_15824a33-515a-493c-a33f-38a7b852e11a

即使我授予“网络服务”用户对该文件的访问权限,它也不起作用。

最后我必须删除证书,并使用 MMC 重新导入,将私钥放置到:

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\c3ccd4300462fe2aa7cec7f747fbd075_15824a33-515a-493c-a33f-38a7b852e11a

所以我的问题是,如何让 certmgr 将私钥放在 C:\ProgramData\ 而不是当前用户的 AppData?

【问题讨论】:

    标签: wcf ssl certificate


    【解决方案1】:

    您不应尝试在文件级别使用证书。不保证支持的是内部实现。

    有一个 MS 工具可以帮助你:

    Microsoft Windows HTTP 服务 (WinHTTP) 证书 配置工具“WinHttpCertCfg.exe”,使管理员能够 在任何证书存储中安装和配置客户端证书 可由 Internet 服务器 Web 应用程序管理器访问 (IWAM) 帐户。

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa384088(v=vs.85).aspx

    您需要运行的命令:

    此命令授予对“MyCertificate”私钥的访问权限 TESTUSER 帐户的“我的”证书存储中的证书。

    winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyCertificate -a TESTUSER
    

    使用此链接安装工具:

    http://www.microsoft.com/en-us/download/details.aspx?id=19801

    【讨论】:

    • 我最终使用了以下命令:winhttpcertcfg.exe -i DV15Server.pfx -c LOCAL_MACHINE\My -a SYSTEM
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2021-03-22
    • 2021-01-12
    • 2019-02-10
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多