我正在将现有(和工作)的ASP.NET网站移动到Azure网站。该站点上的一些功能是签署XML文档。获取密钥的代码是:
// retrieve a key from the key safe - this will create it if it does not exist yet
System.Security.Cryptography.CspParameters csp = new CspParameters();
csp.KeyContainerName = "MyKeyName";
System.Security.Cryptography.RSACryptoServiceProvider key = new RSACryptoServiceProvider(csp);
最后一行是抛出CryptographicException,并显示消息“系统找不到指定的文件”。
我没有将密钥或容器放入Azure - 我的理解是ServiceProvider会创建一个。 我查看了this article,但没有得到任何线索。
显然我缺少一些基本的东西。
答案 0 :(得分:7)
谢谢西蒙 - 这使我指向了正确的方向。
事实证明,您需要指定在计算机商店中创建密钥。有效的代码是:
System.Security.Cryptography.CspParameters csp = new CspParameters();
csp.KeyContainerName = "MyKeyName";
csp.Flags = CspProviderFlags.UseMachineKeyStore;
请注意添加指定“UseMachineKeyStore”
的行