问题描述
我们有一项服务,可以生成 CA 证书并在启动时使用该 CA 证书签署所有其他必需的证书。
CA 证书具有关联的私钥,并存储在带有可导出标志的 Windows 证书存储中。这在大多数机器上都可以正常工作,但在我们 QA 的一台机器上,我们遇到了一些令人讨厌的问题。
当我从代码中的证书存储区加载 CA 证书并检查 HasPrivateKey
标志时,它返回 true
。然后当我尝试使用 CA 证书签署另一个证书时。它抛出键集不存在异常。
在证书存储中,它说证书有效。在一般页面上它说
您有一个与此证书对应的私钥
好兆头!但是当我们尝试右键单击 -> 任务 -> 导出时。包含私钥按钮变灰并显示
找不到关联的私钥。只有证书可以 导出
我们认为这是一个权限问题,所以我们在管理员模式下运行 mmc,结果仍然相同。
在我的开发机器上,我注意到私钥文件存储在 %APPDATA%\Microsoft\Crypto\Keys
中,但我们 QA 的机器并非如此。我们无法在时间戳 = CA 证书生成时间的同一文件夹中找到私钥文件。我们还研究了
%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\SystemKeys
%WINDIR%\ServiceProfiles\LocalService
%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys
但仍然没有运气。
用于运行该服务的帐户是本地系统,因此此处的权限不应该是问题。除了 Windows Defender 之外,没有安装任何特殊的防病毒软件,Defender 的历史记录中也没有。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)