PowerShell 経由で Key Vault にキーをインポートできます。次に、キーをインポートするための Web インターフェイスを作成します。KeyVaultClient.ImportKeyAsync() 関数を使用してみましたが、 keyBundle パラメータに固執しています。keyBundle が KeyVault から返されることを理解しています。PFX ファイルを keyBundle に変換する方法がわかりません。ファイル パスとパスワードを渡す Add-AzureKeyVaultKey コマンドレットに似た拡張メソッドはありますか? または、PFX を keyBundle に変換する方法はありますか?
質問する
679 次
1 に答える
4
単一の方法ほど簡単ではありませんが、.Net 4.6.1 ではこれでうまくいくはずです。RSA キーを含む PFX でのみ機能しますが、PFX と KeyVault の両方で基本的にサポートされているのはこれだけです。コードは次のとおりです。
X509Certificate2 cert = new X509Certificate2(
pfxBytes,
password,
X509KeyStorageFlags.Exportable);
using (RSA rsa = cert.GetRSAPrivateKey())
{
var parameters = rsa.ExportParameters(true);
KeyBundle bundle = new KeyBundle
{
Key = new JsonWebKey
{
Kty = JsonWebKeyType.Rsa,
// Private stuff
D = parameters.D,
DP = parameters.DP,
DQ = parameters.DQ,
P = parameters.P,
Q = parameters.Q,
QI = parameters.InverseQ,
// Public stuff
N = parameters.Modulus,
E = parameters.Exponent,
},
};
}
古いバージョンの .Net を使用している場合は、RSA rsa = (RSA) cert.PrivateKey
代わりにを使用する必要cert.GetRSAPrivateKey()
がありますが、IDisposable および非 RSA キーをより明確に処理するため、上記のコードをお勧めします。
于 2016-07-30T07:40:48.160 に答える