是否可以批量签署 CSR(例如使用 certutil)?

是否可以批量签署 CSR(例如使用 certutil)?

我有大约 100 个 CSR 需要在 Windows PKI 上签名。我想知道是否可以通过批处理或 powershell 脚本批量提交、发布和导出这些 CSR(也许可以使用 cert util),以及如何执行此操作。

我搜索了好久,还是没有找到任何结果,但我仍然认为这是可以实现的。任何帮助我都会非常感激。

谢谢。

答案1

我在独立的 Windows 2003 CA 上使用命令行工具,但我很确定它们在新版本上也以相同的方式工作。

提交请求

certreq.exe -config .\MyCA -submit myhost1.req

这将返回如下内容:

RequestId: 555
Certificate request is pending: Taken Under Submission (0)

然后您可以发出请求:

certutil.exe -resubmit 555

并将其导出到文件中:

certreq.exe -config .\MyCA -Retrieve 555 myhost1.cer

因此,有了这些知识和目录中的 100 个请求文件,您就可以使用 PowerShell:

  • 循环遍历所有文件并对每个文件执行三个命令
  • 您需要解析命令的输出certreq submit以获取后面两个步骤所需的请求 id。

-config .\myCA是指定要使用的 CA,在本例中是本地机器上名为“myCA”的 CA。

如果系统中已经有请求,则需要循环遍历所有待处理的请求,然后针对每个请求运行最后两个步骤。

答案2

我在尝试做类似的事情时发现了这个问题;我有一堆由 HP iLO 设备生成的 Base64 格式的 CSR,并想使用我们的 AD 证书服务企业 CA 对它们全部进行签名。

我最终用这个命令成功完成了它:

certreq -config "caserver01.mydomain.com\Name of My CA" -attrib "CertificateTemplate:CNOfMyCertificateTemplate" -submit c:\myCSR.csr c:\pathToSaveCertificate.cer

注意//

  • 您需要指定证书模板的 CN,而不是显示名称。我通过使用 ADSIedit 在此处查找找到了 CN:

    CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=mydomain,DC=com
    
  • 可以通过运行以下命令找到域中所有企业 CA 的名称

    certutil -dump
    
  • 我的用户帐户无需批准即可使用该证书模板,因此证书会自动颁发并由 certreq 立即下载。我不确定 CA 是如何设置的,甚至不知道这是否是一个特别好的主意。如果请求需要批准,我相信您需要运行单独的“certreq -retrieve”命令,以便在证书获得批准后下载证书。

希望这对某人有帮助!

相关内容