2

我有下面一段代码从Azure的主要库下载证书PowerShell的“X509Certificate2Collection”异常调用“导入”和“3”的说法(S):“找不到请求的对象

$secretName = "TestCert" 
    $kvSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName 
    $kvSecretBytes = [System.Convert]::FromBase64String($kvSecret.SecretValueText) 
    $certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection 
    $certCollection.Import($kvSecretBytes,$null, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable) 

但虽然导入证书到certCollection导入方法抛出下面的错误。

Exception calling "Import" with "3" argument(s): "Cannot find the requested object. 
" 
At C:\Users\abc\Desktop\test2.ps1:8 char:1 
+ $certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptogr ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : CryptographicException  

非常感谢这方面的帮助。谢谢

回答

1

改变这样的代码,你是好去!

$secretName = "TestCert" 
    $kvSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName 
    $kvSecretBytes = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($kvSecret.SecretValueText)) 
    $jsonCert = ConvertFrom-Json($kvSecretBytes) 
    $certBytes = [System.Convert]::FromBase64String($jsonCert.data) 
    $certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection 
    $certCollection.Import($certBytes,$jsonCert.password,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable) 
+0

是刚刚从我的一位同事那里得到的。并非常感谢你在这里分享这段代码。是的,它的工作。 – user1335978

相关问题