gpt4 book ai didi

.net - CryptoKeySecurity 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:11 25 4
gpt4 key购买 nike

我正在尝试使用以下代码修改特定 $cert 的访问规则:

$csp = New-Object System.Security.Cryptography.CspParameters (
$cert.PrivateKey.CspKeyContainerInfo.ProviderType,
$cert.PrivateKey.CspKeyContainerInfo.ProviderName,
$cert.PrivateKey.CspKeyContainerInfo.KeyContainerName)

$csp.Flags = [System.Security.Cryptography.CspProviderFlags]::UseExistingKey -bor [System.Security.Cryptography.CspProviderFlags]::UseMachineKeyStore
$csp.CryptoKeySecurity = $cert.PrivateKey.CspKeyContainerInfo.CryptoKeySecurity
$csp.KeyNumber = $cert.PrivateKey.CspKeyContainerInfo.KeyNumber

$access = New-Object System.Security.AccessControl.CryptoKeyAccessRule (
$identity,
[System.Security.AccessControl.CryptoKeyRights]::GenericRead,
[System.Security.AccessControl.AccessControlType]::Allow)

$csp.CryptoKeySecurity.AddAccessRule($access)

但它在最后一行抛出异常,因为 $csp.CryptoKeySecurity 为空。调试时发现 $cert.PrivateKey.CspKeyContainerInfo.CryptoKeySecurity 也是空的。然而,困难的部分是这只发生在五分之一的机器上,不依赖于操作系统版本,也不依赖于 PS 版本,只发生在我们的生产环境中,为什么......?仅供引用 $cert.PrivateKey 不为空,$cert.PrivateKey.CspKeyContainerInfo 也不为空。

最佳答案

最终问题出在我们生产环境中安全设置的不同配置上。在我的机器上,设置 Manage auditing and security log 被设置为 Administrators,而在服务器上它是不同的,只是我们的 OPS 人员。在将代码重写为 C# 后发现了这一点,它抛出异常,不像 PS,它只是默默地返回 null。

The process does not possess the ‘SeSecurityPrivilege’ privilege which is required for this operation.

有关如何解决此问题,请参阅 this SO question .

关于.net - CryptoKeySecurity 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com