加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – “指定的网络密码不正确”X509Certificate2构造函数中的异

发布时间:2020-12-15 21:52:26 所属栏目:百科 来源:网络整理
导读:我有一个控制台应用程序,它从字节数组加载X509证书,如下所示: var cert = new X509Certificate2(certificateContent,// byte[] password,// string X509KeyStorageFlags.PersistKeySet); certificateContent是一个表示pfx文件内容的byte [].此代码适用于我
我有一个控制台应用程序,它从字节数组加载X509证书,如下所示:

var cert = new X509Certificate2(certificateContent,// byte[]
                                password,// string
                                X509KeyStorageFlags.PersistKeySet);

certificateContent是一个表示pfx文件内容的byte [].此代码适用于我测试过的许多证书.但是,我正在测试的一个证书会导致此行抛出CryptographicException,并显示消息“指定的网络密码不正确.”,即使提供的密码是正确的.

奇怪的是,我可以在LinqPad中使用相同的代码从相同的pfx文件创建具有相同密码的证书,并且它可以正常工作.

我在调试器中检查了控制台应用程序中的调用站点,并验证了正在传入的值.

什么可能导致此构造函数在控制台应用程序中抛出此异常,但在LinqPad中不使用相同的数据,并且在其他证书的两个位置都可以正常工作?

更多细节

证书存储在Base64的数据库中. Console应用程序从DB读取证书,将其从Base64转换为byte [],然后尝试如上所述创建X509Certificate2对象.

我一直在测试三种证书:

>我的雇主CA提供的个人客户身份验证证书.
>由同事使用自己的自签名CA创建的测试证书.
>我自己使用自签名CA创建的测试证书.

证书1和2在控制台应用程序和LinqPad中按预期工作.

证书3在LinqPad中加载正常,但如果我尝试在控制台应用程序中使用它,则会生成上述错误.

证书2和证书之间存在两个显着差异. 3.

> Cert2于2016年到期,Cert3于2039年到期
>与cert2关联的私钥是2048位. Cert3是1024位.

这些差异中的任何一个都会导致“指定的网络密码不正确”错误吗?为什么所有3个证书在LinqPad中都可以正常工作,但只有1个在控制台应用程序中抛出错误?

解决方法

希望这会对某人有所帮助:

User “S C”指出了Windows XP和Windows Server 2003上的证书密码的以下要求.

0 < password.Length < 32

我看到有关32是否被允许的相互矛盾的报道.我可以确认我使用的是32个字符的密码(MD5哈希),并将其截断为30个字符来解决问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读