1

我们有一项服务将生成 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 的历史上也没有任何内容。

4

0 回答 0