2012-07-19 154 views
0

我試圖實現通過客戶端證書認證的HTTP通信。當發送的「正常」(即未壓縮)的.NET Framework的HTTP請求,這是相當簡單:X509Certificate和.NET Compact Framework 3.5

HttpWebRequest request = ...; 
string certificatePath = ...; 
string certificatePassword = ...; 

request.ClientCertificates.Add(
    new X509Certificate(certificatePath, certificatePassword));     

然而,Compact Framework的3.5,X509Certificate只有一個,它接受字節數組,並沒有其他的構造。我想我應該讀取證書文件並將其內容傳遞到該字節數組中,但密碼又如何?我應該如何在Compact Framework上指定它?

+0

我會假設密碼將被包含在字節數組中。文件說什麼?如果沒有,請回答你的問題,對這個問題做一些研究。來源:http://msdn.microsoft.com/en-us/library/5128sby8.aspx – 2012-07-19 15:43:08

+0

@Ramhound是的,我會假設,但我不完全知道如何。當然,我已經瀏覽過文檔並做了一些谷歌搜索,但無濟於事。這就是爲什麼我問這個問題:) – 2012-07-19 17:04:55

回答

0

我沒有找到任何方式使用X509Certificate和密碼。

最後,我決定使用X509Store並從那裏獲取證書。這會使原本預期的部署變得更加困難,但至少它是可行的:)

0

我遲了兩年,但我在自己的研究中偶然發現了這個問題。

如果仔細查看文檔的示例代碼,您會發現必須首先打開PFX文件,然後在創建X509Certificate類的另一個實例之前將其導出。

我理解這一點的方式如下:完整的.NET Framework API(即在桌面上)將類構造函數的密碼參數作爲過載。因此,使用完整框架,使用Export方法導出證書的原始數據(即沒有安全密碼),然後將生成的字節數組存儲到文件中。之後,您將該文件傳輸到移動設備,將文件讀取到一個字節數組中,並將其傳遞給Compact Framework上的構造函數X509Certificate

當然,這是解決問題的「原始」方式。然後必須小心保護以某種方式傳輸的數據。

但是,在進一步閱讀中,以這種方式導出PFX文件不包含私鑰。

相關問題