public static async Task<X509Certificate2> GetKeyVaultCert()
{
X509Certificate2 pfx;
try
{
var kvClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
var secret = await kvClient
.GetSecretAsync("https://macscampvault.vault.azure.net/secrets/letsencrypt").ConfigureAwait(false);
byte[] bytes;
if(secret.ContentType == "application/x-pkcs12")
bytes = Convert.FromBase64String(secret.Value);
else
{
bytes = new byte[0];
Console.WriteLine("secret is not PFX!!");
throw new ArgumentException("This is not a PFX string!!");
}
var password = new SecureString();
var coll = new X509Certificate2Collection();
coll.Import(bytes, null, X509KeyStorageFlags.Exportable);
pfx = coll[0];
// File output added in case I end up needing to write cert to container
// File.WriteAllBytes(Directory.GetCurrentDirectory().ToString() + "/Macs.pfx", bytes);
Console.WriteLine(pfx.HasPrivateKey);
Console.WriteLine(pfx.GetRSAPrivateKey());
}
catch (Exception ex)
{
Console.WriteLine($"There was a problem during the key vault operation\n{ex.Message}");
throw;
}
return pfx;
}
那么,如何使用私钥呢?这里是有关文件的要点。
如何在Azure Key Vault中序列化和反序列化PFX证书帮助了我?但跟着它走之后,我就到了这个状态。
在您的要点中,您有以下代码:
var keyVaultCert = GetKeyVaultCert().Result ??
throw new ArgumentNullException("GetKeyVaultCert().Result");
pfx = new X509Certificate2(keyVaultCert.RawData);
第二行删除私钥,因为rawdata
属性只是返回DER编码的X.509对象。
KeyVaultCert
已经是具有私钥的X509Certificate2
,您可能只想使用它。
pfx = GetKeyVaultCert().Result ?? throw etc;
但是,这将错误地表示它无法加载证书。
问题内容: 我曾经生成过RSA密钥对。如果我没看错,那么KeyStore仅用于存储证书,而不用于存储密钥。如何将私钥正确存储在计算机上? 问题答案: 注意:此代码仅用于演示目的。将私钥存储在磁盘上时,必须对其进行加密。不要按原样使用它。 您可以执行以下操作: 保存功能: 并以相同的方式读回: 读取私钥相似。
我试着把它当作钥匙储存起来。下面是Azure powershell代码 但当我试图用GetKeyAsync方法获取它时,却无法使用它。
2)生成CA证书请求 3)生成自签有效期-10年 4)使用KeyStoreExplorer这样的程序将密钥对(私钥和自签名证书)导入到新的JKS中
资源组 集成帐户 密钥库 Active Directory 使用命令set-azurermkeyvaultaccesspolicy向我的用户授予所有密钥和机密的权限 每当我转到集成帐户>Certificates>Add>choose[Certificate Type]=“Private”时,组合框资源组和密钥库会自动填充,但密钥名称会抛出以下错误: 与密钥库[MY_KEY_VAULT]通信失败。请
问题内容: 我需要将2个密钥存储到KeyStore中,这是相关代码: 尽管我得到了执行,但“私钥必须带有证书链” 那到底是什么?以及我将如何生成它? 问题答案: 您还需要提供私钥条目的证书(公钥)。对于由CA签名的证书,链是CA的证书和最终证书。对于自签名证书,您只有自签名证书。 示例: 要生成证书,请点击以下链接: 示例: