Я чувствую, что это как-то связано с разрешениями AppPool, но поскольку это приложение размещено в Azure, это невозможно изменить.
Мой код работает в консольном приложении, и когда AppPool настроен на запуск от имени пользователя (я). Он не запускается, когда AppPool настроен на запуск как ApplicationIdentity и когда служба размещена в Azure (я отправлю код, если потребуется, но я не думаю, что проблема заключается в этом).
Неважно, загружаю ли я сертификат из магазина, из файла или из массива байтов. Результаты такие же.
Я не знаю, какая информация будет полезна при диагностике этого, но похоже, что цепочка / путь не загружается с ограниченными привилегиями. Вызов .Verify () возвращает true в консольном приложении (и IIS, работающем от имени моего пользователя) и false в ApplicationIdentity.
Сертификат загружается нормально и в обоих случаях содержит закрытый ключ.