Есть несколько публикаций, в которых описывается обход проблемы, с которой столкнулись многие пользователи (и я), когда они пытаются создать объект X509Certificate2 из потока данных в Azure. Эта проблема, по-видимому, связана с тем, что при создании пары открытый / закрытый ключ в объекте X509Certificate2 он сохраняет закрытый ключ.
X509KeyStorageFlags.UserKeySet, похоже, не работает, поскольку мы не загружаем профиль пользователя в контексте веб-приложения.
Сайт на веб-сайтах Azure не может обработать сертификат X5092
Ошибка загрузки сертификата в функциях Azure
Решение простое: передайте X509KeyStorageFlags.MachineKeySet. Но есть ли последствия для безопасности этого? В частности, что если мое веб-приложение не является единственным владельцем на компьютере, на котором выполняются веб-приложения Azure?
В конечном счете, я делаю все это, чтобы подписать JWT в веб-приложении ASP.NET Core:
X509SecurityKey privateKey = new X509SecurityKey(signingCert);
var credentials = new SigningCredentials(privateKey, SecurityAlgorithms.RsaSha256Signature);