当前位置: 首页 > 知识库问答 >
问题:

如何将证书从一个Azure密钥库复制到另一个?

吕嘉荣
2023-03-14

我正试图将证书从一个密钥存储库复制到另一个密钥存储库中,而不在本地计算机上保存它。看起来Azure KeyVault CLI只支持基于文件的证书导入,如下所示:

# download cert 
az keyvault certificate download --file $certFileName --vault-name $sourceAkv -n $certName

# import cert 
az keyvault certificate import --file $certFileName --vault-name $destAkv -n $certName

有什么方法可以代替传递对象或字符串吗?在Azure Powershell模块中,这是可能的:

Import-AzureKeyVaultCertificate -VaultName $DestinationVaultName -Name $CertificateName -CertificateString $secretText.SecretValueText 

共有1个答案

彭雨华
2023-03-14

我发现类似的东西可以在PowerShell中工作,将证书和密钥导出为对象,然后将其导入到另一个keyvault,而不必将其保存为临时PFX文件

$CertName = 'mycert'
$SrcVault = 'mysourcekeyvault'
$DstVault = 'mydestinationkeyvault'
$cert = Get-AzKeyVaultCertificate -VaultName $SrcVault -Name $CertName
$secret = Get-AzKeyVaultSecret -VaultName $SrcVault -Name $cert.Name
$secretValueText = '';
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
    $secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
}
finally {
    [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
$secretByte = [Convert]::FromBase64String($secretValueText)
$x509Cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2
$x509Cert.Import($secretByte, "", "Exportable,PersistKeySet")
Import-AzKeyVaultCertificate -VaultName $DstVault -Name $CertName -CertificateCollection $x509Cert
 类似资料:
  • 没有开箱即用的解决方案可以将数据从一个Azure EventHub克隆到另一个EventHub。有什么可能的选择来实现这一点?

  • 我正在尝试对现有API启用Azure密钥库证书。我们已经在Azure Key Vault帐户中拥有秘密和Azure Key Vault证书。下面是配置证书的代码: 在我的本地计算机上,我正确地导入了证书,其中包括下载pfx格式。

  • 我们最近发现需要将每个秘密(名称和值)从一个Azure KeyVault复制到新创建的一个。我找到了从备份中恢复秘密的方法,但我们没有备份。是否有一个Powershell脚本可以循环访问源存储库中的每个名称/值组合,并将其复制到目标存储库?

  • 问题内容: 上周,我创建了一个Github存储库,却忘记选择该存储库的许可证。现在已经有3个大型提交。 我问了3个贡献者是否还可以,是否删除了回购文件,然后使用相同的名称再次创建它,这一次在创建回购文件时选择了许可证,他们对此有何看法。 题 有没有一种方法可以将提交提交到新的存储库中(这次第一次提交是LICENSE文件),并且仍然保留提交元信息? 问题答案: 有没有一种方法可以将提交提交到新的存储

  • 嘿,我想使用Azure密钥库加密/解密我的数据库中的数据。我看到自己和其他人都在纠结的一个主要问题是如何保护程序中的访问id和密钥。我看到有人说,如果你没有一个原生的微软应用程序(我没有,我的应用程序运行在第三方linux服务器上),你可以获得一个证书来访问密钥库。在我掏出200美元购买之前,我想知道拥有该证书意味着即使证书被盗,攻击者也不能用它来访问密钥库,对吧?我的理解是证书只能在我的域上工作

  • 但是,这将错误地表示它无法加载证书。