Azure - Создание X509Certificate2 из base64 в Azure Функция приводит к ошибке: указанный сетевой пароль неверен - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь создать функцию Azure, которая будет вызывать SOAP API, требующий использования сертификата. У меня есть сертификат .PFX (сохраненный как base64) и соответствующий пароль. Оба хранятся в Azure Key Vault как секреты, и я подтвердил, что они извлекаются нормально.

В моей функции Azure (. NET Core 3.1) я создаю сертификат X509Certificate2 объект со следующим конструктором:

certificate = new X509Certificate2(certBytes, pass, X509KeyStorageFlags.MachineKeySet);

Используемый здесь X509KeyStorageFlags был предложен несколькими другими ответами на вопросы здесь.

Результатом этого конструктора всегда является следующая ошибка: The specified network password is not correct.

Я попытался выполнить то же действие локально, и здесь сертификат загружен правильно, и я могу получить информацию об эмитенте, et c.

Другие флаги хранилища, такие как MachineKeySet + PersistKeySet + Exportable не имеет значения, а загрузка PFX не как base64, а как файл дает ту же ошибку.

Кто-нибудь знает, почему этот код ведет себя иначе в функции Azure по сравнению с его локальным запуском?

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Azure У функций не загружен профиль пользователя, поэтому сохранить закрытый ключ негде. Или, всего за MachineKeySet, вероятно, у вас нет прав администратора, поэтому вы не можете создать файл закрытого ключа ... и почему-то эта ошибка интерпретируется неверно.

Возможно, вам повезло с флаг EphemeralKeySet, так как он говорит «не сохранять ключ на диск», что должно избежать проблемы. Если этого не происходит, попробуйте EphemeralKeySet | MachineKeySet, что позволит избежать «профиля нет», а также отсутствия разрешений (поскольку на самом деле он никогда не пытается создать файл).

0 голосов
/ 05 августа 2020

Может сработать передача null в качестве пароля. Я обнаружил, что с сертификатами Key Vault это работает для загрузки как объекты X509Certificate2, по крайней мере, при самоподписании.

...