GetRSAPrivateKey UniqueName returns 空字符串
GetRSAPrivateKey UniqueName returns empty string
我正在使用 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
returns 空字符串。
附上屏幕截图。
当您指定 -path
和 -password
参数时,不会保留私钥并且不会安装证书。为了安装证书,您需要删除提到的参数并使用 -StoreLocation
参数来指示必须在哪个商店安装证书。
我正在使用 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
returns 空字符串。 附上屏幕截图。
当您指定 -path
和 -password
参数时,不会保留私钥并且不会安装证书。为了安装证书,您需要删除提到的参数并使用 -StoreLocation
参数来指示必须在哪个商店安装证书。