MS 证书服务是否可以从属于使用 OpenSSL 创建的 CA

MS 证书服务是否可以从属于使用 OpenSSL 创建的 CA

我想为我的域设置一个企业证书颁发机构。这样我就可以为各种目的颁发证书。我想遵循最佳实践,将离线 CA 作为根 CA,并将我的企业 CA 设置为从属 CA。但为这项任务授权完整的 Windows 副本似乎很愚蠢。

我希望能够做的是将一些实时发行版安装到 USB 闪存盘上,然后安装 openssl,并在闪存驱动器上设置我的 CA。当我准备好构建根密钥/证书时,我将断开计算机与网络的连接,然后再也不会在网络连接的计算机上使用该 USB 磁盘。

我是否能够正确签署并创建可用的 Windows 企业 CA 的从属 CA 证书。我需要使用 OpenSSL 的哪些选项来构建 CA 并正确签署从属 CA 证书。

我尝试搜索网络,是我唯一能找到的关于这个话题的东西。但它是 2008 年之前的,而且我并不完全确定这个人是否成功。

答案1

是的,它运行得很好;Windows 证书颁发机构毫不犹豫地作为非 Windows 根的下属运行。

在企业模式下使用 OpenSSL 根和 Windows 2008 R2 从属进行测试。


有几件事可以与 MS CA 在 OpenSSL 配置中的期望相一致:

  • 有效的 AIA 和 CDP 位置应适用于根证书,位于自签名根部分x509_extensions属性配置的部分中。类似以下内容:[req]

    authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
    crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
    
  • 给定的 OpenSSL 配置可能默认不允许从属 CA。针对已签名的请求更改此设置(当然,请确保对于不应是 CA 的请求,不会出现这种情况)。这将位于由x509_extensions以下部分的属性配置的部分中[ca]

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

所以,我们将进行CA来测试。

创建你的根:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

摆弄您的配置并在[ca]OpenSSL 配置部分中创建必要的文件和目录。

一切准备就绪,微软方面可以开始工作;创建具有手动签名的 Windows 从属 CA。

将证书请求上传到 OpenSSL 服务器。同时,下载根证书。将其导入到计算机的受信任根存储中,而不是用户的根存储中!

颁发从属证书:

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

如果这不起作用,那么您的 CA 的配置可能存在问题 - 新证书目录、索引文件、序列文件等。请检查错误消息。

如果成功了,那就没问题了。如果还没有,请创建一个 CRL 并将其放入您上面配置的 CDP 中;我刚刚安装了 Apache 并将其卡在 webroot 中:

openssl ca -gencrl -out /var/www/root.crl

如果尚未将证书放入 AIA 位置,请执行以下操作:

cp /etc/ssl/certs/root.pem /var/www/root.pem

下载新颁发的下属证书,并使用证书颁发机构 MMC 管理单元将其安装到 CA。它会抱怨任何与信任或验证有关的问题,但它在道德上并不反对接受它。

最终结果;Windows CA 正常运行,企业 PKI 管理单元没有任何抱怨,并且OpenSSL Generated Certificate在属性中有一个提示。

工作卡

答案2

我明白你的意思,但我认为 OpenSSL 不是完成这项工作的合适工具。你可能需要看看开源证书颁发机构项目例如扩展数据库连接协议它比 OpenSSL 更专注于此功能,并且有您可以使用的特定文档。

我认为这个概念没有理由行不通,因为你所做的只是签署下属 CA 的证书。如果你付钱给公共 CA 来为你做这件事,你不一定知道或关心他们使用的是什么类型的服务器。

您需要关心的是:

  • 你可以从你的下属生成的 CSR 中签署证书
  • 结果可以安装在下属本身上
  • 你有一个根签名证书,可以作为受信任证书安装在你瞄准的任何客户端上
  • 你可以生成一个撤销列表,并在某处提供

我不能说我已经这样做了,但我确信如果你按照文档从 Windows 框生成 CSR,然后按照你的 CA 文档从 CSR 生成 .p7k 证书,那么你应该没问题。

顺便说一句 - 我建议您将 CA 创建为流行的虚拟机管理程序(例如 Hyper-V 或 VMware)的虚拟机,而不是启动盘,确保将其非常安全地存储在继任者可以找到的地方,并定期将其离线启动以确保其运行,或将其传输到新媒体/技术。根 CA 的寿命可能是 10 年或 20 年……

相关内容