0

PowerShell 経由で Key Vault にキーをインポートできます。次に、キーをインポートするための Web インターフェイスを作成します。KeyVaultClient.ImportKeyAsync() 関数を使用してみましたが、 keyBundle パラメータに固執しています。keyBundle が KeyVault から返されることを理解しています。PFX ファイルを keyBundle に変換する方法がわかりません。ファイル パスとパスワードを渡す Add-AzureKeyVaultKey コマンドレットに似た拡張メソッドはありますか? または、PFX を keyBundle に変換する方法はありますか?

4

1 に答える 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 に答える