Как легко включить лазерную функцию https при локальном тестировании

Я хочу протестировать триггер Http для функции Azure локально в Windows.

Я использую инструменты azure-function-core-tools для запуска таких команд, как func start --port 5007 --useHttps

И тогда я получил ошибку: автоматическое создание сертификата в настоящее время не работает в сборке .NET Core.

Похоже, что я должен использовать команду типа func start --port 5007 --useHttps --cert certificate.pfx после создания самозаверяющего сертификата локально.

Есть ли способ легко включить https?

Как и когда я использую .net core webapi, я легко экспортирую env: ASPNETCORE_URLS = https://localhost. И после нажатия какой-то кнопки я могу хорошо использовать https. У нас есть что-нибудь подобное?

Или если func start --port 5007 --useHttps достаточно, но я пропустил некоторую конфигурацию?

Спасибо!


person south    schedule 18.06.2020    source источник


Ответы (3)


Обновить ответ:

func start --port 5007 --useHttps не будет автоматически создавать сертификат после лазурной функции v1. Инструменты azure function v2 и azure function v3, основанные на .Net Core, не будут создавать сертификат за вас. Сертификат следует сгенерировать вручную.

Исходный ответ:

Я могу воспроизвести вашу ошибку:

введите описание изображения здесь

Решение:

Используйте администратора, чтобы запустить PowerShell, перейдите в папку приложения-функции и затем используйте эту команду:

$cert = New-SelfSignedCertificate -Subject localhost -DnsName localhost -FriendlyName "Functions Development" -KeyUsage DigitalSignature -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1")

А затем создайте файл сертификата:

Export-PfxCertificate -Cert $cert -FilePath certificate.pfx -Password (ConvertTo-SecureString -String 123 -Force -AsPlainText)

Наконец, я могу использовать https: (команда ниже запускается в Windows cmd.)

func host start --port 5007 --useHttps --cors * --cert certificate.pfx --password 123

введите описание изображения здесь

person Bowman Zhu    schedule 19.06.2020
comment
Привет, большое спасибо за ответ! На самом деле я знаю, как вы упомянули выше, чтобы запустить триггер https. Мне интересно, можем ли мы легко использовать команду `` func host start --port 5007 --useHttps '', чтобы сразу запустить ее, но не добавлять --cert certificate.pfx каждый раз. Что именно мне нужно, так это способ, чтобы инструмент azure-function-tool автоматически сгенерировал сертификат отладки по умолчанию и использовал его при запуске функций. Так что мне не обязательно самому создавать файл сертификата, как это делает webapi при отладке. - person south; 19.06.2020
comment
@south Это проблема azure-functions-core-tools. В официальном документе действительно говорится, что --useHttps автоматически создаст сертификат для запуска функции Azure с https. Но на самом деле она работает только с функцией Azure v1. (Функция Azure v1 автоматически сгенерирует сертификат, это не проблема). Функции azure v2 и v3, основанные на .Net Core, больше не генерируют сертификат автоматически. Я думаю, что сейчас вы можете создать сертификат только вручную. - person Bowman Zhu; 19.06.2020
comment
Команды функций @south Azure больше не могут улучшать эту функцию. В конце концов, в рабочей среде лазурная функция не будет работать локально. После публикации приложения-функции в Azure по умолчанию будет поддерживаться протокол https (также поддерживается протокол HTTP, если вы его не запретите). - person Bowman Zhu; 19.06.2020
comment
@south func start --port 5007 --useHttps не будет генерировать сертификат для вас после 'azure function v1'. Так что создавать нужно вручную. - person Bowman Zhu; 19.06.2020
comment
Большое спасибо за ваш ответ! Хорошо, теперь я могу поставить задачу по автоматической генерации сертификата в моем проекте :) - person south; 22.06.2020

В дополнение к ответу Bowman Zhu вы также можете настроить VS, чтобы затем использовать сертификат при запуске проекта.

Перейдите в свойства проекта и выберите вкладку «Отладка». В аргументы приложения добавьте следующее:

host start --useHttps --cert "certificate.pfx" --password "123"

Вы также можете включить сертификат в свой проект и установить для него значение «Копировать», если оно новее, чтобы развернуть его в своей корзине.

person Carl Howarth    schedule 23.01.2021

В инструментах ядра функций Azure (V2) теперь есть новый переключатель, поэтому вам больше не нужно использовать переключатели --cert и --password. Теперь вы можете использовать:

host start --useHttps --useDefaultCert

Кроме того, для полноты вы можете создать свой локальный самозаверяющий сертификат для ядра dotnet, используя:

dotnet dev-certs https --trust
person Craig    schedule 08.06.2021