我在Azure上托管了一个Identity Server
网络应用。它的根目录中有一个.pfx
文件用于签名。问题是,当新发布它完全正常但是在一段时间后它开始抛出CryptographicException: Keyset does not exist.
基于CryptographicException KeySet does not exists我会认为这是一个文件访问问题,但为什么突然之间的azure会弄乱文件访问。
答案 0 :(得分:0)
我建议您不要先从磁盘检索签名证书。而是将证书上传到Azure门户中的关联Web应用程序。
并在应用程序启动时检索证书
等等。$c
答案 1 :(得分:0)
我偶尔也会看到同样的例外。在我的情况下,它是由我在部署插槽之间交换时数据保护密钥更改引起的。将services.AddDataProtection()
与默认配置一起使用并在Azure App Service上托管应用程序时,数据保护密钥存储在%HOME%\ASP.NET\DataProtection-keys
中。此目录由网络共享支持,以确保所有应用实例上的密钥都可用,但这不适用于部署插槽。因此,当您从一个部署槽切换到另一个部署槽时,密钥将会更改,当您的应用尝试取消保护有效负载时,您会看到CryptographicException: Keyset does not exist
。
要确保您的应用始终使用相同的密钥,您需要配置其他密钥存储提供商。即使用Redis或Azure Blob存储作为后备存储。
中找到有关如何配置此内容的详细信息我还在my blog上描述了我遇到的问题。