Я создаю самозаверяющий сертификат с помощью сценария powershell и импортирую его в хранилище сертификатов.Теперь мне нужно назначить нового пользователя в разделе управления личными ключами для сертификата.
Я пытался сделать это с помощью следующего примера кода.
$certificate = (import the certificate)
## Identify the user you'll be granting permission to
$grantee_name = 'dev\Batman'
$grantee = New-Object System.Security.Principal.NTAccount($grantee_name)
## Get the location and permission-of the cert's private key
$privatekey_rsa = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($certificate)
$privatekey_file_name = $privatekey_rsa.key.UniqueName
$privatekey_path = "${env:ALLUSERSPROFILE}\Microsoft\Crypto\Keys\${privatekey_file_name}"
$privatekey_file_permissions = Get-Acl -Path $privatekey_path
## Grant the user 'read' access to the key
$access_rule = New-Object System.Security.AccessControl.FileSystemAccessRule($grantee, 'Read', 'None', 'None', 'Allow')
$privatekey_file_permissions.AddAccessRule($access_rule)
Set-Acl -Path $privatekey_path -AclObject $privatekey_file_permissions
В моем случае
$privatekey_file_name = $privatekey_rsa.key.UniqueName
возвращает пустую строку.Также прилагаю скриншот.
![Powershell image](https://i.stack.imgur.com/KkIkk.png)