为什么 Windows 2012 R2 不信任我的自签名证书?

为什么 Windows 2012 R2 不信任我的自签名证书?

在测试环境中,我目前无法测试一些需要尽快部署的东西(实际上已经部署了,但你知道最后期限是怎样的……),因为 Windows 拒绝信任我们在隔离测试环境中拥有的自签名证书。虽然我可以用“真实”证书和一些 DNS 技巧来回避这个问题,但出于安全/隔离的原因,我没有上述证书。

我正在尝试连接到一个名为 Zimbra 的基于 Linux 的电子邮件服务器;它使用自动生成的自签名 OpenSSL 证书。虽然 Google 显示的页面具体提到了具有 IIS 自签名证书的 IIS 网站,但我认为生成证书的方法实际上并不重要。

根据说明,我发现这里这里,这应该只是将证书安装到本地计算机的受信任根证书颁发机构存储中。我已经这样做了,以及手动复制证书并通过 MMC 管理单元直接导入。注销和重新启动不会改变任何东西。

这是我每次收到的证书错误: 在此处输入图片描述

这是认证路径(剧透:它只是证书本身): 在此处输入图片描述

最后,证书安全地保存在本地计算机的证书存储区中,正如我找到的说明所说的那样: 在此处输入图片描述

这些说明特别提到了 Vista(好吧,第二个没有提到操作系统)和 IIS,而我使用的是 Server 2012 R2 连接到基于 Linux 的服务器;导入向导中有一些不同(例如,我的向导有为当前用户或本地系统导入的选项,尽管我都试过了),所以也许我必须在这里做一些不同的事情?我还没有找到某个设置,必须更改才能做到这一点真的真的是否信任我已经告诉它信任的证书?

让 Windows Server 2012 R2 信任自签名证书的正确方法是什么?

答案1

您收到的错误并不是说它不是受信任的根证书,而是它无法验证向上层到受信任的证书。如果证书链的任何部分损坏、不受信任或丢失,您将收到这样的错误。我使用不受信任的自签名证书时遇到的错误是这样的:此 CA 根证书不受信任。要启用信任,请在受信任的根证书颁发机构存储中安装此证书。但对您来说,它说它无法验证受信任的根证书。这可能是在自签名过程中,您可能已告诉 openssl 使用不同的根(非自签名)对证书进行签名,或者可能未将其设置为根 CA。如果是前者,则必须信任签名的根。如果是后者,则只需在 openssl.conf 中设置一些属性即可。

答案2

据我所知,您需要将 zmaster 添加为受信任的源 CA,因为这是颁发机构,WS2k12 正在尝试根据它一无所知的主机验证证书。您说得对,生成方法并不重要,但可验证的来源很重要。这会产生您所体验到的影响:WS2k12 不会仅仅因为证书的名称为 $Random_issuing_authority 就信任该证书,它需要能够验证该证书。

答案3

我遇到了同样的问题,结果我的解决方案是更新 dovecot 使用的邮件服务器的 .crt 和 .key 文件。邮件上的 Exim4 有一个更新的证书/密钥集,但 dovecot 仍然指向旧的证书/密钥集。

旧的证书/密钥对在大多数情况下都能正常工作,但在 outlook.com 和 MS Outlook 2013 中却不行。

outlook.com 的问题导致我最近升级了 exim4 证书——现在 dovecot [和 webmail 服务器] 也使用新的证书(和密钥)文件。邮件服务器本身最近也进行了升级 [从旧的 Debian squeeze-lts 升级到 wheezy],旧的设置使用旧的证书/密钥集完全没问题,但升级后,我需要创建新的证书/密钥集,然后 MS 产品才能与邮件服务器正常配合使用。

答案4

将证书安装到受信任的根证书颁发机构和受信任的发布者。

相关内容