有几篇文章描述了许多用户(和我)在尝试从Azure中的字节流构造X509Certificate2对象时遇到的问题的解决方法。该问题似乎与以下事实有关:在X509Certificate2对象中构造公钥/私钥对时,它将保存私钥。
X509KeyStorageFlags.UserKeySet似乎失败,因为我们没有在Web应用程序的上下文中加载用户配置文件。
Site in Azure Websites fails processing of X509Certificate2
Runtime error loading certificate in Azure Functions
解决方案很简单:传入X509KeyStorageFlags.MachineKeySet。但是,这有安全隐患吗?具体来说,如果我的Web应用程序不是运行Azure Web应用程序的计算机上的唯一租户,怎么办?
最终,我正在做所有这些事情,以便可以在ASP.NET Core Web应用程序中签名JWT:
X509SecurityKey privateKey = new X509SecurityKey(signingCert);
var credentials = new SigningCredentials(privateKey, SecurityAlgorithms.RsaSha256Signature);