如何在使用 certreq 向企业 CA 请求证书时抑制弹出窗口 window?
How to suppress a popup window while using certreq to request a certificate from an enterprise CA?
我正在尝试从与我们的企业 CA 服务器位于同一域中的计算机请求证书。一切正常,但我距离让我的脚本具有零用户交互还有一步之遥。
我基本上将以下脚本修改为不包含任何参数并删除了 SAN 选项:
https://gallery.technet.microsoft.com/scriptcenter/Request-certificates-from-b6a07151
执行以下从 .inf 文件创建新请求的命令后,我得到一个弹出窗口 window:
Invoke-Expression -Command "certreq -new `"$inf`" `"$req`""
Machine context template conflicts with user context.
当我单击“确定”时,一切正常。创建了一个新请求,脚本的其余部分工作正常。但是我找不到以编程方式单击 "OK" 的方法。
certreq 工具确实有 -q
(抑制交互式提示)和 -f
(对 force/bypass 的东西),但是 none 这些工作。
certreq -new -q $inf $req
或同时使用 -q
和 -f
结果:
Active Directory Enrollment Policy
{<GUID>}
ldap:
Machine context template conflicts with user context.
Certificate Request Processor: The specified role was not configured for the application 0x8004e00c (-2147164148 CONTEXT_E_ROLENOTFOUND)
我几乎被困在这里了。如有任何帮助,我们将不胜感激!
问题是模板属于 Computer
而不是 User
。这意味着应该在计算机帐户的上下文中创建请求。这意味着您必须 运行 脚本作为 SYSTEM
、Administrator
或任何其他允许识别为计算机的帐户。
您的问题的答案应该是更改 Request-Certificate 中的参数。ps1。 查看用于生成请求的 inf 文件并检查 MachineKeySet 参数。 默认为 false 并提示:
Machine context template conflicts with user context.
当模板是机器类型时出现。 当您将其切换为 true ale 使用用户模板时,会出现相反的提示:
User context template conflicts with machine context.
对于来这里抑制 select CA 提示的人,请将 -config <FQDN_OF_CA>\<LOGICAL_NAME_OF_CA>
添加到您的 CertReq
命令中。