2012-10-24 38 views
6

Tôi muốn sử dụng xác thực chứng chỉ ứng dụng khách trong ứng dụng Windows Store XAML. Sử dụng makecert i đã tạo một CA và chứng chỉ máy khách tự ký, việc xác thực hoạt động trong trình duyệt IIS/ASP.NET + (IE10, Chrome, v.v.). Bây giờ tôi muốn sử dụng nó trong ứng dụng Windows Store, nhưng không chắc chắn về cách thực sự cài đặt chứng chỉ. Tôi có một tệp cert.pfx mà tôi đã nhập vào IE10. Đây là mã tôi sử dụng để sử dụng dịch vụ HTTP qua SSL.Cài đặt chứng chỉ ứng dụng khách trong các ứng dụng Windows XAML

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

HttpClient client = new HttpClient(handler); 

Không chắc chắn sự khác biệt giữa ClientCertificateOption.Automatic and ClientCertificateOption.Manual là gì. Khi tôi cố gắng kết nối chứng chỉ không được trình bày cho máy chủ và tôi nhận được lỗi 401 tôi đoán rằng chứng chỉ không có trong kho ứng dụng cert và do đó không có gì được gửi đến máy chủ. Làm thế nào để cài đặt cert sau đó?

Tôi có nên sử dụng phương thức CertificateEnrollmentManager.ImportPfxDataAsync() không? nếu vậy làm thế nào tôi có thể chuyển đổi .pfx thành 'Thông báo PFX được mã hóa Base64' Nếu pfx chứa khóa riêng?

Hoặc có lẽ tôi nên sử dụng phần mở rộng Giấy chứng nhận như đã mô tả ở đây: http://msdn.microsoft.com/en-us/library/windows/apps/hh464981.aspx#certificates_extension_content

Trả lời

6

Đoạn mã dưới đây sẽ được tải một file PFX và tạo ra một mã hóa base64 chuỗi có thể được sử dụng bởi phương pháp ImportPfxDataAsync:

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); 

này giả định rằng bạn đặt chứng chỉ của mình trong thư mục 'Chứng chỉ'.

Bạn có thể muốn xem http://www.piotrwalat.net/client-certificate-authentication-in-asp-net-web-api-and-windows-store-apps/ hướng dẫn này thông qua kịch bản đầu cuối để sử dụng chứng chỉ ứng dụng khách trong ứng dụng windows 8 để liên lạc với api web asp.net.

Các vấn đề liên quan