带有 cer 文件的 X509Certificate2 ctor

Posted

技术标签:

【中文标题】带有 cer 文件的 X509Certificate2 ctor【英文标题】:X509Certificate2 ctor with cer file 【发布时间】:2012-10-09 01:29:34 【问题描述】:

我在 .Net 中遇到 2 路 ssl 配置的一些问题。 不知何故,当我在构造函数中使用 .cer 文件和密码创建 X509Certificate2 对象时,密码被忽略(我输入了错误的密码并且它起作用了 - 响应成功返回)。 另一方面,当我使用 .p12 文件时,行为符合预期(密码错误导致结果不成功)

有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

.cer 文件仅包含(通常情况下)未加密形式的 X509 证书。在这种情况下,解码证书不需要密码。我想 X509Certificate2 构造函数尝试确定 Byte[] 参数的编码格式,并在不需要时忽略密码参数。而且很可能在创建之后,对象的PrivateKey 属性是null

加载 .cer 文件时,您应该使用仅接受 1 Byte[] 参数的构造函数。该构造函数的文档清楚地指定了支持的数据格式:

此构造函数使用字节数组中的证书信息创建一个新的 X509Certificate2 对象。字节数组可以是二进制 (DER) 编码或 Base64 编码的 X.509 数据。字节数组也可以是 PKCS7(Authenticode)签名文件;签名者证书用于创建对象。

PKCS#12 format(.p12 或 .pfx 文件)是证书和私钥的容器格式。在这种情况下,需要密码才能解密加密的私钥。实际上,在 X509Certificate2 构造函数文档中指定了 PKCS#12 文件的行为:

此构造函数与包含证书私钥的 PKCS12 (PFX) 文件一起使用。使用正确的密码调用此构造函数会解密私钥并将其保存到密钥容器中。

【讨论】:

+1。 .cer 文件通常用于存储公钥,如lextm.com/2012/02/simple-publicprivate-key-signing-sample.html 中所述 好的,这就是我需要的。谢谢。 链接好像改成了lextm.com/index.php/2012/02/…

以上是关于带有 cer 文件的 X509Certificate2 ctor的主要内容,如果未能解决你的问题,请参考以下文章

python openssl x509怎么用

使用X509Certificate2类操作证书文件

使用 X509 证书请求

无法在 python 中使用 X509Certificate 对数据进行签名

无法将密钥文件添加到 X509Certificate2

使用带有CODE JAVA的wsdl生成类,因为我跳过certificat