2012-07-19 157 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文件不包含私钥。

相关问题