0

我正在尝试实现由客户端证书认证的 HTTP 通信。在“正常”(即非紧凑型).NET Framework 上发送 HTTP 请求时,非常简单:

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

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

然而,在 Compact Framework 3.5 上,X509Certificate只有一个接受字节数组的构造函数,没有别的。我想我应该读取一个证书文件并将其内容传递到该字节数组中,但是密码呢?我应该如何在 Compact Framework 上指定它?

4

2 回答 2

0

我没有找到任何使用方法X509Certificate和密码。

最后,我决定使用X509Store并从那里获取证书。这将使部署比最初预期的要困难一些,但至少它是可行的:)

于 2012-07-21T14:50:13.230 回答
0

我迟到了两年,但我在自己的研究中偶然发现了这个问题。

如果您仔细查看文档的示例代码,您会发现您必须先打开 PFX 文件,然后将其导出,然后再创建X509Certificate该类的另一个实例。

我理解这一点的方式如下:完整的.NET Framework API(即在桌面上)将类的构造函数的密码参数作为重载。因此,使用完整的框架,您可以使用 Export 方法导出证书的原始数据(即,没有保护密码),然后将生成的字节数组存储到文件中。之后,将该文件传输到移动设备,将文件读入字节数组并将其传递给X509CertificateCompact Framework 上的构造函数。

当然,这是解决问题的“原始”方式。然后必须注意以某种方式保护正在传输的数据。

但是,在进一步阅读时,以这种方式导出 PFX 文件不包括私钥。

于 2014-08-25T22:05:13.220 回答