powershell管理私钥权限

Rockson Lee 0 信誉分
2024-05-10T00:21:13.7033333+00:00

可以通过mmc管理证书,选择证书 私钥管理 给networkservice分配权限,但我找不到如何通过powershell脚本自动化完成这一操作。

如果可以,可以提供从安装证书到分配权限的全程ps1脚本。

非常感谢您的回复

Windows
Windows
Microsoft 操作系统系列,可跨个人计算机、平板电脑、笔记本电脑、手机、物联网设备、独立混合现实头戴显示设备、大型协作屏幕和其他设备运行。
150 个问题
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Ian Xue (Shanghai Wicresoft Co., Ltd.) 31,166 信誉分 Microsoft 供应商
    2024-05-10T05:22:39.9366667+00:00

    您好Rockson Lee

    欢迎在Q&A论坛发帖。

    微软为PowerShell提供了PKI模块,里面包含了用于PKI客户端的命令。

    https://learn.microsoft.com/en-us/powershell/module/pki/?view=windowsserver2022-ps

    另外也有一些第三方的模块,提供了更多的命令,比如PSPKI

    https://www.powershellgallery.com/packages/PSPKI/4.2.0

    但是由于用户环境的不同,并没有一套全程的脚本来对应在mmc中可能的每一个操作。某些操作要用脚本实现可能依然需要自己去利用现有的命令去完成。

    比如上面帖子中提到的管理私钥权限,实际是设置私钥文件的访问控制列表ACL,这个可以通过Set-Acl命令操作,但这个不是PKI的命令。

    比如我在本地计算机的个人下有一个指纹为8FA82424885864C8E0A244C520AA2B57F491ACC0的证书,想要对私钥允许network service完全控制,那么可以这么做

    $Cert = Get-Item -Path Cert:\LocalMachine\My\8FA82424885864C8E0A244C520AA2B57F491ACC0
    $PrivateKey =[System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($Cert)
    $KeyFileName = $PrivateKey.key.UniqueName
    $KeyFilePath = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$KeyFileName"
    $Acl = Get-Acl -Path $KeyFilePath
    $Ace = [System.Security.AccessControl.FileSystemAccessRule]::new("NT AUTHORITY\NETWORK SERVICE","FullControl","Allow")
    $Acl.AddAccessRule($Ace)
    Set-Acl -Path $KeyFilePath -AclObject $Acl
    

    祝好

    Ian Xue


    如果回答是有帮助的,请点击"接受答案"。