坑死了,折騰了一天,在這里留個紀念。
x509.PrivateKey報“指定的提供程序類型無效”錯誤。
網上搜一大堆,全都是誤人子弟的東西,大致的意思是:
操作系統升級后證書中的私鑰是以CngKey的方式存在,
http://clrsecurity.codeplex.com 提供了RSACng的封裝,使用如下:
if (x509.HasCngKey())
var privateKey = x509.GetCngPrivateKey();
.net4.6 以后的版本提供了對x509的擴展,使用如下:
x509.GetRSAPrivateKey(); 得到RSACng
真實的情況是:的確和操作系統有關,64位的操作系統在運行32位的程序時,那個wow64就不提供升級改進后的這些安全類型了,
所以64位的IIS千萬不要去把應用程序池的"啟動32位應用程序"設置成True,如果有什么32位的程序就全都換成64位的吧,這才是人間正道。