在使用system.identity.model的WS-federation应用程序上,一个CNG证书给我带来了麻烦。
首先,我收到了这个错误:
错误:' ID1039:无法访问证书的私钥。 确保证书的私钥上的访问控制列表(ACL) 授予对应用程序池用户的访问权限。 [...]提供商无效 指定的类型。
我发现cng证书似乎与system.identityModel不兼容。 然后我跟着these step将我的cng私钥转换为RSA私钥。 新证书在我的计算机(w10)或其他Windows Server 2012上运行良好。
我制作了一个小程序来检查。在转换之前,HasCngKey为真,GetCngPrivateKey返回" System.Security.Cryptography.CngKey",当然,PrivateKey会抛出无效的提供者类型异常。
转换后,HasCngKey为false,我可以使用cert.PrivateKey获取私钥。
但是在客户端uat环境中,对于相同的新证书,HasCngKey仍然是真的,但GetCngPrivateKey抛出" System.Security.Cryptography.CryptographicException:Keyset不存在" 和cert.PrivateKey仍然抛出指定的无效提供程序类型,就好像密钥仍然是cng。
有没有人知道为什么它在某台机器上工作但不是好机器?