2012-10-24 4 views
6

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

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

答えて

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と通信するエンドツーエンドのシナリオをご覧ください。

関連する問題