Невозможно загрузить сертификат в функции Azure - PullRequest
0 голосов
/ 27 августа 2018

Я разрабатываю функцию Azure, которая должна загрузить сертификат из защищенной строки Base 64. Сертификат защищен ключом. Сертификат и пароль хранятся в хранилище ключей Azure.

Когда я пытаюсь загрузить сертификат из функции, я получаю ошибки в функциях v1 и v2.

Вот код, используемый для загрузки сертификата:

var certificate = new X509Certificate2(Convert.FromBase64String(certificateBase64), certificatePassword)

С этим кодом для .Net у меня есть странная проблема, которую я могу воспроизвести локально. Проблема связана с .Net 4.6.1. В .Net Core 2.0 он отлично работает локально (в CLI функции Azure), но у меня возникла странная проблема с файлом, который не был найден (https://github.com/dotnet/corefx/issues/11042)

Как упоминалось в конце предыдущего поста, я пытался установить флаг X509KeyStorageFlags.EphemeralKeySet .

var certificate = new X509Certificate2(Convert.FromBase64String(certificateBase64), certificatePassword, X509KeyStorageFlags.EphemeralKeySet)

Этот флаг пока недоступен для .Net Core 2 (https://github.com/dotnet/corefx/issues/24454),, а также для .Net 4.6.1, среды, используемой функциями Azure.

Есть ли способ принудительно использовать Net Framework, используемый функцией Azure v1? Есть ли простой обходной путь в .Net Core 2.0 без сохранения сертификата в виде файла в функции?

1 Ответ

0 голосов
/ 31 августа 2018

После многих попыток я нашел решение. Флаг X509KeyStorageFlags.MachineKeySet должен использоваться. Он работал как для Function App V1 (.Net 4.6.1), так и для Function V2 (.Net Core 2):

var certificate = new X509Certificate2(Convert.FromBase64String(certificateBase64), certificatePassword, X509KeyStorageFlags.MachineKeySet)
...