X509Certificate2提示我输入密码

时间:2015-09-15 14:07:43

标签: c# authentication httpwebrequest ssl-certificate x509certificate2

我已将私钥导出到pfx文件,我正在使用它将一些数据发布到服务器。当代码命中此行时

X509Certificate2 cert = new X509Certificate2("C:\\mycerts\\dml.pfx","Passw0rd");

出现提示并要求我定义密码。我写了两次新密码。然后当我到达这一行

Stream newStream = request.GetRequestStream();

它再次提示我,我输入了新定义的密码,帖子成功了。

有没有办法可以避免用户互动?

2 个答案:

答案 0 :(得分:0)

系统似乎配置为对所有密钥使用私钥强保护。您应该使用组策略禁用此设置:http://blogs.technet.com/b/pki/archive/2009/06/17/what-is-a-strong-key-protection-in-windows.aspx

答案 1 :(得分:0)

所以我发现我的证书有一个邪恶的加密服务提供商。使用certutil -dump我会得到这个

  

----------------结束嵌套等级1 ----------------

     

提供商= CRYPTOMATHiC RSA Full Provider 1.2

     

简单容器名称:验证

     

唯一容器名称:验证

     

错误:缺少关键字关联属性:CERT_KEY_IDENTIFIER_PROP_ID

     

无法加载密钥:密钥不存在。 0x8009000d(-2146893811 NTE_NO_KEY)

     

加密测试失败

不知道为什么这很糟糕,但我设法运行一个修复工具,然后它会显示

  

----------------结束嵌套等级1 ----------------

     

Provider = Microsoft增强型RSA和AES加密提供程序

     

传递加密测试

现在无需提示输入密码即可使用