将私钥存储到 Azure KeyVault 中,值已更改
Store Private Key into Azure KeyVault, value got changed
我尝试将我的私钥存储到 Azure Key Vault,但是当我取回它时,我的私钥被更改了。
如果我将私钥放入我的 web.config 文件,它可以正常工作。
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAohoZ+TCXMn17BPFXFCuIHvh7oONSBNCjuixl2CbwrGO8tIAO
XIQP1sZa3lhXkUj0f4HewmYsx6JR+39Do21H+QtCZxR4qCvOJxrrFHqMrk76aQji
....
ZVmUljOatig+g+q+jMEf7IA5zcAgBdAAuausXrPoNcip89Yuqag1
-----END RSA PRIVATE KEY-----
由于我的私钥只是一个文本,所以我将其存储为 Secrets。我做对了吗?
我也试过将密钥存储为证书,但密钥只是带有隐藏 CRLN 的文本,它不是 PEM 或 PKCS#12。在我的例子中,我不需要存储 public 键。
下面是我检索密钥的代码:
public static string GetDocuSignPrivateKey()
{
var key = keyVaultClient.GetSecretAsync($"{vaultUrl}secrets/DocuSignPrivateKey/88e15b41234bf89619ddc9a2exxxx").Result;
return key.Value;
}
抱歉,我刚开始使用 Azure KeyVault。请帮忙。谢谢。
感谢@Matt Small 的回复。我使用 Azure Cloud Shell 输入私钥并且它有效。
$secretvalue = ConvertTo-SecureString 'priKey here' -AsPlainText -Force
$secret = Set-AzKeyVaultSecret -VaultName 'vaultName' -Name 'secretName' -SecretValue $secretvalue
这就是我使用 powershell 将私钥从 .ppk 文件部署到密钥库的方式。第一个是在我使用 AAD MFA 的非生产环境中,第二个是在我使用服务主体的生产环境中。
AAD 多因素登录
Connect-AzAccount -DeviceCode
$fileContentInBvtes = get-content C:\Users\filedirectory\file.ppk -Encoding Byte
$fileContentAsBase64 = [Svstem.Convert]::ToBase64String($fileContentInBytes)
Set-AzKeyVaultSecret -VaultName 'CHANGEVALUETOKEYVAULTNAME' -SecretName 'CHANGEVALUETOSECRETNAME' -SecretValue (ConvertTo-SecureString -String $fileContentAsBase64 -force -AsPlainText) -ErrorAction Stop
服务主体
$secPassword = ConvertTo-SecureString -AsPlainText -Force -String 'CHANGEVALUETOSERVICEPRINCIPALPASSWORD'
$Applicationld= 'CHANGEVALUETOSERVICEPRINCIPALID'
$Credential = New-Object -TypeName Svstem.Management.Automation.PSCredential -Argumentlist $Applicationld, $secPassword
Connect-AzAccount -ServicePrincipal -Tenantld 'CHANGEVALUETOTENANTID' -Credential $Credential
$fileContentInBvtes = get-content C:\Users\filedirectory\file.ppk -Encoding Byte
$fileContentAsBase64 = [Svstem.Convert]::ToBase64String($fileContentInBytes)
Set-AzKeyVaultSecret -VaultName 'CHANGEVALUETOKEYVAULTNAME' -SecretName 'CHANGEVALUETOSECRETNAME' -SecretValue (ConvertTo-SecureString -String $fileContentAsBase64 -force -AsPlainText) -ErrorAction Stop
在 C# 中使用以下方法将私钥添加到 Azure,而不是手动添加,然后使用获取密钥方法:
string secretName = "pKey";
string secretValue = "-----BEGIN ENCRYPTED PRIVATE KEY----\nMII9w0BBQ\nzZ8=\n-----END ENCRYPTED PRIVATE KEY-----\n";
Task addKey = client.SetSecretAsync(secretName, secretValue);
addKey.Wait();
SecretClient client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);
KeyVaultSecret pKey = OKTAclient.GetSecret("pKey");
string privateKey = pKey.Value;
我尝试将我的私钥存储到 Azure Key Vault,但是当我取回它时,我的私钥被更改了。
如果我将私钥放入我的 web.config 文件,它可以正常工作。
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAohoZ+TCXMn17BPFXFCuIHvh7oONSBNCjuixl2CbwrGO8tIAO
XIQP1sZa3lhXkUj0f4HewmYsx6JR+39Do21H+QtCZxR4qCvOJxrrFHqMrk76aQji
....
ZVmUljOatig+g+q+jMEf7IA5zcAgBdAAuausXrPoNcip89Yuqag1
-----END RSA PRIVATE KEY-----
由于我的私钥只是一个文本,所以我将其存储为 Secrets。我做对了吗?
我也试过将密钥存储为证书,但密钥只是带有隐藏 CRLN 的文本,它不是 PEM 或 PKCS#12。在我的例子中,我不需要存储 public 键。
下面是我检索密钥的代码:
public static string GetDocuSignPrivateKey()
{
var key = keyVaultClient.GetSecretAsync($"{vaultUrl}secrets/DocuSignPrivateKey/88e15b41234bf89619ddc9a2exxxx").Result;
return key.Value;
}
抱歉,我刚开始使用 Azure KeyVault。请帮忙。谢谢。
感谢@Matt Small 的回复。我使用 Azure Cloud Shell 输入私钥并且它有效。
$secretvalue = ConvertTo-SecureString 'priKey here' -AsPlainText -Force
$secret = Set-AzKeyVaultSecret -VaultName 'vaultName' -Name 'secretName' -SecretValue $secretvalue
这就是我使用 powershell 将私钥从 .ppk 文件部署到密钥库的方式。第一个是在我使用 AAD MFA 的非生产环境中,第二个是在我使用服务主体的生产环境中。
AAD 多因素登录
Connect-AzAccount -DeviceCode $fileContentInBvtes = get-content C:\Users\filedirectory\file.ppk -Encoding Byte $fileContentAsBase64 = [Svstem.Convert]::ToBase64String($fileContentInBytes) Set-AzKeyVaultSecret -VaultName 'CHANGEVALUETOKEYVAULTNAME' -SecretName 'CHANGEVALUETOSECRETNAME' -SecretValue (ConvertTo-SecureString -String $fileContentAsBase64 -force -AsPlainText) -ErrorAction Stop
服务主体
$secPassword = ConvertTo-SecureString -AsPlainText -Force -String 'CHANGEVALUETOSERVICEPRINCIPALPASSWORD' $Applicationld= 'CHANGEVALUETOSERVICEPRINCIPALID' $Credential = New-Object -TypeName Svstem.Management.Automation.PSCredential -Argumentlist $Applicationld, $secPassword Connect-AzAccount -ServicePrincipal -Tenantld 'CHANGEVALUETOTENANTID' -Credential $Credential $fileContentInBvtes = get-content C:\Users\filedirectory\file.ppk -Encoding Byte $fileContentAsBase64 = [Svstem.Convert]::ToBase64String($fileContentInBytes) Set-AzKeyVaultSecret -VaultName 'CHANGEVALUETOKEYVAULTNAME' -SecretName 'CHANGEVALUETOSECRETNAME' -SecretValue (ConvertTo-SecureString -String $fileContentAsBase64 -force -AsPlainText) -ErrorAction Stop
在 C# 中使用以下方法将私钥添加到 Azure,而不是手动添加,然后使用获取密钥方法:
string secretName = "pKey";
string secretValue = "-----BEGIN ENCRYPTED PRIVATE KEY----\nMII9w0BBQ\nzZ8=\n-----END ENCRYPTED PRIVATE KEY-----\n";
Task addKey = client.SetSecretAsync(secretName, secretValue);
addKey.Wait();
SecretClient client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);
KeyVaultSecret pKey = OKTAclient.GetSecret("pKey");
string privateKey = pKey.Value;