GetRSAPrivateKey UniqueName возвращает пустую строку - PullRequest
0 голосов
/ 30 января 2019

Я создаю самозаверяющий сертификат с помощью сценария 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

1 Ответ

0 голосов
/ 30 января 2019

При указании параметров -path и -password закрытый ключ не сохраняется и сертификат не устанавливается.Для установки сертификата необходимо удалить указанные параметры и использовать параметр -StoreLocation, чтобы указать, в каком хранилище должен быть установлен сертификат.

...