我最近为正在创建的 PC 映像设置了强制配置文件,并且我能够通过组策略在配置文件中设置我需要的所有内容,但有一个主要项目除外。显然,强制配置文件不允许在个人存储中安装证书(pfx/p12 证书)。这是一个交易破坏者,因为我们的一家供应商要求安装个人证书。我不想因为这个警告而放弃强制配置文件,所以我正在尽我所能解决这个问题。我觉得我已经非常接近了,但在最后一步我遇到了瓶颈……这是我目前所想出的办法:
- 我发现,通过手动编辑 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%userSID% 下的注册表子项的状态值,将其从 21001(将其指定为强制配置文件)更改为 0(将其指定为本地配置文件),我可以欺骗计算机认为它是本地配置文件,并且它将允许安装证书。
- 我已经编写了一个 powershell 脚本,可以查询当前登录用户的 SID,然后为我编辑状态值。
- 此脚本需要管理员权限才能运行,但它需要在登录时在非管理员帐户下运行。我目前正在尝试通过组策略部署计划任务来实现此功能,该任务在使用管理员凭据登录时运行脚本。
- 为了使其正常工作,我需要在计划任务中设置“无论用户是否登录都运行”,但这样做会导致脚本运行,但不起作用。 (注册表项不会更新。)
在我看来,问题在于任务计划程序无法运行交互式脚本,并且无论用户是否登录都运行复选框被勾选。有人知道我该怎么做才能让它正常工作吗?我对脚本不太熟悉,不知道是否可以更新我的脚本,使其成为可以更新此注册表项的非交互式脚本。
我也不依赖这个脚本,如果有其他方法可以自动安装此证书,感谢大家的支持。我还有一些想法可以研究,我认为这些想法可能有效也可能无效,但我缺乏经验,因此不确定,例如-
也许可以以某种方式创建强制配置文件,以便它像强制配置文件一样工作(在用户登录时删除配置文件并在其位置加载默认配置文件),在创建配置文件时状态将被创建为“0”(而不是 21001)
也许可以编写一些东西(使用 Powershell 以外的语言),以便在登录时更改注册表项,可以将其设置为以管理员身份“无论用户是否登录都运行”。
也许有一种方法可以手动将证书安装到我的系统中,而不是使用证书安装程序或 certutil。在我看来,在强制配置文件上安装证书时,证书将安装在个人存储中,但网站不会进行身份验证。也许是证书密码存储不正确?
非常感谢任何指导或想法,我觉得我离目标很近但又很遥远。谢谢大家!
答案1
原帖作者:我正在尝试恢复我发布此问题的帐户,但在此之前我将通过此答案进行回复。
在我最初删除的答案中,我说过并不是每个人都共享证书 - 有超过 300 个站点,每个站点有 4-5 台 PC,它们都有站点特定的证书。我打算通过组策略来管理证书安装。
就共享的证书而言,以下是我在实践中发现的运作方式。
PC 有一个“模板配置文件”,我的域用户被告知将其用作默认用户配置文件。当用户登录时,将为该特定用户创建一个配置文件,该配置文件反映了模板配置文件的设置。然后,组策略应开始实施我的所有用户 GPO,包括创建和执行更新该新用户特定配置文件的注册表的脚本。下次该用户登录时,配置文件将被完全清除,然后该过程将重新发生。因此,一旦安装了证书,每个用户都会写入其自己的唯一配置文件,因此我可以让 3 个不同的用户在同一台 PC 上安装 3 个不同的证书而不会发生冲突。证书不会安装在模板中,而是安装在登录时创建的唯一配置文件中(我已经通过注册表解决方法确认了这一点。)
另外需要注意的是,每台 PC 只对使用它的用户使用一个证书。因此,假设一个证书对 PC 上的所有配置文件共享,那就没问题了。我只是无法说服我们的供应商颁发 PC 证书。