每个人,
我正在开发一个使用 X509Certificate2 从认证文件中获取私钥的 Web 应用程序。代码片段如下所示:
public static RSACryptoServiceProvider GetSignProviderFromPfx()
{
var strFileName = "c:\cer\mycerfile.pfx";
var strPassword = "000000";
X509Certificate2 pc = new X509Certificate2(strFileName, strPassword, X509KeyStorageFlags.MachineKeySet);
var ThePivateKey = pc.PrivateKey;
return (RSACryptoServiceProvider)ThePivateKey;
}
但是语句 pc.Privatekey 会导致 System.Security.Cryptography.CryptographicException "Invalid provider type specified" 。我确定认证文件没有问题,它确实有一个私钥。并且属性 pc.HasPrivateKey 也返回 true。
测试环境为VS2013,window 7。
我还尝试了以下操作:
一个。我用iis express在VS2013中调试过,问题就出现了。
湾。我在另一台与我的环境相同的计算机上调试它,也出现了问题。
C。我将应用程序发布到在 Windows Web Server 2008 R2 上运行 iis 的服务器,它运行良好。
d。我将应用程序发布到 widows azure 网站,它也运行良好。
因此,我猜代码片段没有问题。引发异常的关键原因是运行环境可能存在问题。我检查并比较了不同环境下认证文件的读写权限,都是一样的。
有人可以帮忙吗?
谢谢。