Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式将密钥导入Azure密钥库_Azure_Azure Keyvault - Fatal编程技术网

以编程方式将密钥导入Azure密钥库

以编程方式将密钥导入Azure密钥库,azure,azure-keyvault,Azure,Azure Keyvault,我可以通过PowerShell将密钥导入密钥库。现在我想制作一个web界面来导入密钥。 我尝试使用KeyVaultClient.ImportKeyAsync()函数,但我仍然坚持使用keyBundle参数。我知道钥匙包是从钥匙库返回的。我不知道如何将PFX文件转换为keyBundle。 是否有类似于Add-AzureKeyVaultKey cmdlet的扩展方法,我在其中传递文件路径和密码?还是一种将PFX转换为keyBundle的方法?这并不像单一方法那么简单,但这应该可以实现.Net 4.6

我可以通过PowerShell将密钥导入密钥库。现在我想制作一个web界面来导入密钥。 我尝试使用KeyVaultClient.ImportKeyAsync()函数,但我仍然坚持使用keyBundle参数。我知道钥匙包是从钥匙库返回的。我不知道如何将PFX文件转换为keyBundle。
是否有类似于Add-AzureKeyVaultKey cmdlet的扩展方法,我在其中传递文件路径和密码?还是一种将PFX转换为keyBundle的方法?

这并不像单一方法那么简单,但这应该可以实现.Net 4.6.1中的技巧。它只适用于包含RSA密钥的PFX,但这实际上是PFX和KeyVault都支持的唯一东西。代码如下:

X509Certificate2证书=新的X509Certificate2(
pfxBytes,
密码,
X509keystrageFlags.可出口);
使用(RSA=cert.GetRSAPrivateKey())
{
var参数=rsa.ExportParameters(true);
KeyBundle=newkeybundle
{
Key=newjsonwebkey
{
Kty=JsonWebKeyType.Rsa,
//私人物品
D=参数D,
DP=参数.DP,
DQ=参数。DQ,
P=参数。P,
Q=参数。Q,
QI=参数。eq,
//公共物品
N=参数。模数,
E=参数。指数,
},
};
}

如果您使用的是较旧版本的.Net,则必须使用
RSA RSA=(RSA)cert.PrivateKey
而不是
cert.GetRSAPrivateKey()
,但建议使用上面的代码,因为它可以更清楚地处理IDisposable和non-RSA密钥。

这并不像单个方法那么简单,但这应该可以在.Net 4.6.1中做到这一点。它只适用于包含RSA密钥的PFX,但这实际上是PFX和KeyVault都支持的唯一东西。代码如下:

X509Certificate2证书=新的X509Certificate2(
pfxBytes,
密码,
X509KeyStoreAgeflags.Exportable);
使用(RSA=cert.GetRSAPrivateKey())
{
var参数=rsa.ExportParameters(true);
KeyBundle=newkeybundle
{
Key=newjsonwebkey
{
Kty=JsonWebKeyType.Rsa,
//私人物品
D=参数D,
DP=参数.DP,
DQ=参数。DQ,
P=参数。P,
Q=参数。Q,
QI=参数。eq,
//公共物品
N=参数。模数,
E=参数。指数,
},
};
}
如果您使用的是较旧版本的.Net,则必须使用
RSA=(RSA)cert.PrivateKey
而不是
cert.GetRSAPrivateKey()
,但建议使用上面的代码,因为它可以更清楚地处理IDisposable和non-RSA密钥