私はAzure KeyVaultに証明書をアップロードし、Active Directoryに登録されたアプリケーションを使用して「すべて」のアクセス権を取得しました。それはすべて正常に動作します。これで、取得したキーをX509Certificateにロードして、3rdpartyレガシーSOAP Webサービスを呼び出すためのクライアント証明書として使用できるようにする必要があります。私が知る限り、X509Certificateを使ってそのWebサービスを呼び出すことはできます。Azure KeyVault X509Certificateの読み込み方法は?
私はキーまたはシークレットとしてアップロードしても問題ありませんか?私は両方を試みました。
var clientId = "...."
var clientSecret = "...."
..
var token = authenticationContext.GetAccessToken(resource, adCredential);
var keyClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(token));
KeyBundle key = keyClient.GetKeyAsync("https://mycertifcates.vault.azure.net/keys/MyCertificate/123456789");
これまでのところは良い、私は結果としてKeyBundleを持って、私はBase64Stringに変換することができますようにそれがようだが、何でも、私は例外:(
第一の試みで終わるてみ
私が試した:
var publicKey = Convert.ToBase64String(key.Key.N); var cert = X509Certificate.FromBase64String(publicKey);
は{ "要求されたオブジェクトを見つけることができません\ rをする\ nを。"}System.Security.Cryptography.CryptographicException
えーえ
第二の試み、RSACryptoServiceProviderにそれをロードし、それをどうしますか?同じ例外に結果と私も
var rsaCryptoProvider = new RSACryptoServiceProvider();
var rsaParameters = new RSAParameters()
{
Modulus = key.Key.N,
Exponent = key.Key.E
};
rsaCryptoProvider.ImportParameters(rsaParameters);
var cspBlob = rsaCryptoProvider.ExportCspBlob(false);
// what to do with the cspBlob ?
var publicKey = Convert.ToBase64String(cspBlob);
ない秘密鍵にしたい場合は、私も秘密鍵を取得することはできないんだけど、公開鍵が異なっています。もちろん、これはうまくいきません。
第三の試みは、私が管理ポータルを使用して秘密証書たContentTypeとしてそれをアップロードしました。
var secret = helper.GetSecret("https://myCertificate.vault.azure.net/secrets/MyCertificate/1234567890"); var value = secret.Value; // Now I got the secret.. works flawless // But it crash with the same exception at .Import var exportedCertCollection = new X509Certificate2Collection(); exportedCertCollection.Import(Convert.FromBase64String(value)); var cert2 = exportedCertCollection.Cast<X509Certificate2>().Single(s => s.HasPrivateKey);
System.Security.Cryptography.CryptographicException { " 要求されたオブジェクトを見つけることができませんた。\ r \ n"}
任意提案歓迎です。
私は、トレースログ
ystem.Net情報を見て、秘密鍵を含むPFXを必要とする:0:[37880] SecureChannelの#23107755 - から選択する1つのクライアント証明書を残しました。 System.Net Information:0:[37880] SecureChannel#23107755 - 証明書ストアで一致する証明書を検索しようとしています。 System.Net情報:0:[37880] SecureChannelの#23107755 - 証明書の秘密鍵の場所:[件名]
X509Certificate2のために正常に動作します。https:// github.com/Azure/azure-sdk-for-net/tree/93c8ebcf01461ed5d838837dc7dbb7b3f507eec0/src/KeyVault/Microsoft.Azure.KeyVault/Customized – rfcdejong