我已将私钥导出到pfx文件,我正在使用它将一些数据发布到服务器。当代码命中此行时
X509Certificate2 cert = new X509Certificate2("C:\\mycerts\\dml.pfx","Passw0rd");
出现提示并要求我定义密码。我写了两次新密码。然后当我到达这一行
Stream newStream = request.GetRequestStream();
它再次提示我,我输入了新定义的密码,帖子成功了。
有没有办法可以避免用户互动?
答案 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加密提供程序
传递加密测试
现在无需提示输入密码即可使用