6

Windows ストア XAML アプリでクライアント証明書認証を使用したいと考えています。makecert を使用して自己署名 CA とクライアント証明書を作成しました。認証は IIS/ASP.NET + ブラウザー (IE10、Chrome など) で正常に機能します。Windowsストアアプリで使用したかったのですが、実際に証明書をインストールする方法がわかりません。IE10 にインポートした cert.pfx ファイルがあります。SSL 経由で HTTP サービスを使用するために使用するコードを次に示します。

HttpClientHandler handler = new HttpClientHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Automatic;

HttpClient client = new HttpClient(handler);

ClientCertificateOption.Automatic と ClientCertificateOption.Manual の違いがわからない。接続しようとすると、証明書がサーバーに提示されず、401 エラーが発生します。証明書がアプリ証明書ストアに存在しないため、サーバーに何も送信されていないと推測されます。次に、証明書をインストールするにはどうすればよいですか?

CertificateEnrollmentManager.ImportPfxDataAsync() メソッドを使用する必要がありますか? その場合、.pfx を「Base64 でエンコードされた PFX メッセージ」に変換するにはどうすればよいですか? pfx には秘密鍵が含まれている必要がありますか?

または、ここで説明されているように証明書拡張機能を使用する必要があるかもしれません: http://msdn.microsoft.com/en-us/library/windows/apps/hh464981.aspx#certificates_extension_content

4

1 に答える 1

6

次のコードは、pfx ファイルを読み込み、ImportPfxDataAsync メソッドで使用できる base64 でエンコードされた文字列を作成します。

StorageFolder packageLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder certificateFolder = await packageLocation.GetFolderAsync("Certificates");
StorageFile certificate = await certificateFolder.GetFileAsync("YourCert.pfx");

IBuffer buffer = await Windows.Storage.FileIO.ReadBufferAsync(certificate);
string encodedString = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer);

これは、証明書を「Certificates」フォルダーに入れることを前提としています。

http://www.piotrwalat.net/client-certificate-authentication-in-asp-net-web-api-and-windows-store-apps/をご覧ください。これはエンドツーエンドで説明していますWindows 8 アプリでクライアント証明書を使用して asp.net Web API と通信するシナリオ。

于 2012-10-24T22:25:28.237 に答える