在使用certreq向企业CA请求证书时,如何抑制弹出窗口?

时间:2019-05-07 00:34:50

标签: powershell certificate popupwindow ca certreq

我正在尝试从与企业CA服务器位于同一域中的计算机请求证书。一切工作正常,但是我使脚本的用户交互为零仅一步之遥。

我基本上将以下脚本修改为不包含任何参数,并删除了SAN选项:

https://gallery.technet.microsoft.com/scriptcenter/Request-certificates-from-b6a07151

在执行以下命令以从.inf文件创建新请求后,我得到一个弹出窗口:

Invoke-Expression -Command "certreq -new `"$inf`" `"$req`""

Machine context template conflicts with user context.

当我单击“确定”时,一切正常。创建一个新请求,其余脚本正常运行。但是我找不到以编程方式单击“确定”的方法。

certreq工具确实具有-q(用于抑制交互式提示)和-f(用于强制/绕过事物),但是这些都不起作用。

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)

我几乎被困在这里。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您的问题的答案应该是更改 Request-Certificate.ps1 中的参数。 查看用于生成请求的 inf 文件并检查 MachineKeySet 参数。 默认为 false 并提示:

Machine context template conflicts with user context.

appers 当模板是一种机器时。 当您将其切换为 true ale use User template 时,会出现相反的提示:

User context template conflicts with machine context.

答案 1 :(得分:0)

问题在于模板是Computer而不是User类型的模板。这意味着该请求应在计算机帐户的上下文中创建。这意味着您必须以SYSTEMAdministrator或任何其他允许标识为计算机的帐户运行脚本。