我有大约 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”命令,以便在证书获得批准后下载证书。
希望这对某人有帮助!