Windows服务用户帐户无法访问证书存储

埃里克斯·马克西姆斯

背景

我有一个带有两个用户帐户(condor_usr1和condor_usr2)的Windows 7 VM,该帐户用于源代码编译。condor_usr [1 | 2]帐户是管理员组的成员。我有一个HTCondor主VM,该VM定期接收作业并分配每个作业以在condor_usr [1 | 2]帐户之一上运行。Win7 VM上的condor服务以本地系统帐户身份运行,但是正在执行的作业实际上是以condor_usr [1 | 2]帐户身份运行。

我对签名已编译的可执行文件有新的要求。我已将带有私钥的证书导入Windows证书存储区中的Current User \ Personal密钥存储区。

问题

如果我以condor_usr帐户之一登录Win7 VM(例如,通过远程桌面),则以该帐户运行的编译程序将成功签署可执行文件,而以其他帐户运行的编译程序将无法签署可执行文件。例如,如果我以condor_usr2身份登录,则在condor_usr2下运行的编译将成功签名,而在condor_usr1下运行的编译将无法签名。如果我注销,则两个帐户都无法签名。

我收到的具体错误是:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(264,9): error MSB3482: An error occurred while signing: The system cannot find the file specified.

打开某些审核日志记录,发现以下与签名失败同时发生的日志。

签名失败

目标

不管编译运行的是哪个帐户,并且都不需要用户登录,都可以成功签名已编译的可执行文件。

到目前为止我已经弄清楚了什么

  • 正在编译的代码/项目是Visual Studio 2017解决方案。
  • 签名方法是ClickOnce清单签名(VS2017项目中的一个选项)。
  • 启动编译作业后,该作业将使用登录类型2(交互式登录)以condor_usr [1 | 2]身份登录。https://ss64.com/nt/syntax-logon-types.html

登录类型

我尝试过的事情

除非另有说明,否则这些操作无效,并且已还原。

兆位

通过确保本地策略“计算机配置\ Windows设置\安全设置\本地策略\用户权限分配\作为服务登录”中存在这些帐户,确保该过程中涉及的所有帐户都具有“作为服务登录”权限。请注意,此更改将在下一次帐户所有者登录时生效。

尝试直接以“ condor_usr1”而不是“本地系统”帐户的身份运行HTCondor服务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章