2014-01-10 117 views
4

我需要此幫助:程序化在Windows 8中使用SSL證書應用程序

我們的後端通過自簽名證書進行保護。讓我們稱之爲:OurMegaCoolCertificate.cer

因此,我們通過使用certmgr.msc將此證書導入到我們的開發人員機器。現在,我們可以使用下面的代碼檢索我們的後端數據:

async public static Task<string> getData(string Id, string Type) 
    { 
     String url = "https://BACKEND/API/?Id=" + Id + "&Type=" + Type; 
     HttpClientHandler aHandler = new HttpClientHandler(); 
     aHandler.ClientCertificateOptions = ClientCertificateOption.Automatic; 
     HttpClient aClient = new HttpClient(aHandler); 
     aClient.DefaultRequestHeaders.ExpectContinue = false; 

     aClient.DefaultRequestHeaders.MaxForwards = 3; 
     Uri requestUri = new Uri(url); 
     HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUri); 
     //request.Headers.ExpectContinue = false; 
     var result = await aClient.GetAsync(requestUri, HttpCompletionOption.ResponseContentRead); 

     var responseHeader = result.Headers; 
     //Debug.WriteLine(responseHeader.WwwAuthenticate); 

     var responseBody = await result.Content.ReadAsStringAsync(); 

     return responseBody; 
    } 

但offcourse我們不能告訴我們的應用程序的用戶,手動安裝該證書,有沒有辦法來添加該證書項目和用它?或編程導入到用戶機器?請指導我,我是新來的SSL安全

我已經成功地做到這一點,沒有錯誤,但請求失敗,貌似請求沒有找到證書:

private async void GetOverHere() 
    { 
     //await Windows.Security.Cryptography.Certificates.CertificateEnrollmentManager.InstallCertificateAsync("",InstallOptions.None); 
     StorageFolder packageLocation = Windows.ApplicationModel.Package.Current.InstalledLocation; 
     StorageFolder certificateFolder = await packageLocation.GetFolderAsync("Certificates"); 
     StorageFile certificate = await certificateFolder.GetFileAsync("OurMegaCoolCertificate.cer"); 

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

     await Windows.Security.Cryptography.Certificates.CertificateEnrollmentManager.InstallCertificateAsync(encodedString, InstallOptions.None); 


    } 

此外,我們已經嘗試再次

</Capabilities> 
<Extensions> 
<!--Certificates Extension--> 
<Extension Category="windows.certificates"> 
    <Certificates> 
    <Certificate StoreName="Root" Content="Assets\OurMegaCoolCertificate.cer" /> 

    </Certificates> 
</Extension> 

而且,當我們導入使用certmgr.msc到受信任的根證書 - 所有作品

:做這個清單中
+0

也許這會幫助你,https://stackoverflow.com/questions/12337721/how-to-programmatically-install-a-certificate-using-c-尖銳和https://stackoverflow.com/questions/566570/how-can-i-install-a-certificate-into-the-local-machine-store-programmatically-us – vzamanillo

+0

您的鏈接僅適用於Windows 8.1 – Cheese

+0

我嘗試過,但我得到的響應代碼404。哪裏將使用GetOverHere()方法? – ranjith

回答

5

我設法得到這個工作:

我在packagemanifest添加了這個:

</Capabilities> 
<Extensions> 
<!--Certificates Extension--> 
<Extension Category="windows.certificates"> 
    <Certificates> 
     <Certificate StoreName="Root" Content="Assets\OurMegaCoolCertificate.cer" /> 
    </Certificates> 
</Extension> 

但我還沒有使用DER(或類似的東西)導出我的證書,但爲base64和它工作。但所有的教程說,需要導出爲DER ...

相關問題