我有一个问题(希望)有人可以解释一下。 我正在编写一个Powershell脚本,它将证书导入本地计算机存储,并将Everyone组读取权限分配给证书上的私钥。
现在,我确实有一个可以完成此任务的工作脚本,但我注意到我有一个名为" LogonSessionId_0_some-random-number"已为私钥上的ACL分配读取权限,如下图所示:
起初我以为这是我的脚本可能会这样做,但是当我手动导入证书时,我会得到相同的结果。
有没有人见过这个或知道为什么会这样?这个帐户究竟是什么以及为什么要分配权限?我试图在这方面寻找一些答案但是已经很短了。
不确定它是否有帮助,但这是我的代码中导入证书并分配权限的部分:
$sslCert = gci Cert:\LocalMachine\My | WHERE {$_.Subject -match $getCerts} $sslCertPrivKey = $sslCert.PrivateKey $privKeyCertFile = Get-Item -path "$ENV:ProgramData\Microsoft\Crypto\RSA\MachineKeys\*" | WHERE {$_.Name -eq $sslCertPrivKey.CspKeyContainerInfo.UniqueKeyContainerName} $privKeyAcl = (Get-Item -Path $privKeyCertFile.FullName).GetAccessControl("Access") $permission = "Everyone","Read","Allow" $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission $privKeyAcl.AddAccessRule($accessRule) Set-Acl $privKeyCertFile.FullName $privKeyAcl
我使用的是Windows 10 Pro。
非常感谢任何帮助/见解!
答案 0 :(得分:1)
这是因为您具有不同的范围。 当您在计算机级别添加某些内容时,默认情况下,它授予所有用户读取权限。有权访问该计算机的每个人都可以看到证书。 您无需显式授予用户对计算机级别证书的读取访问权限。 就像您安装某些程序时,他们会询问“是否为所有用户安装?”如果您选择“是”,它将在计算机级别安装,并且每个人都可以使用它,否则它将仅为您安装并以其他用户身份登录,意味着他们将无权访问。
注释掉脚本中特定于用户的部分以测试我的意思,您会注意到所有用户都被赋予只读权限,并且一切正常。