本地测试时如何轻松启用azure功能https

问题描述 投票:0回答:6

我想在 Windows 上本地测试 Azure Function Http 触发器。

我使用 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
就足够了,但我错过了一些配置?

谢谢!

azure-functions azure-functions-core-tools
6个回答
22
投票

更新答案:

func start --port 5007 --useHttps
在azure function v1.1之后不会自动创建证书。基于.Net Core的azure function v2和azure function v3工具不会为您创建证书。您应该手动生成证书。

原答案:

我可以重现你的错误:

解决方案:

使用管理员启动您的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


3
投票

作为 Bowman Zhu 答案的补充,您还可以配置 VS,以便在运行项目时使用证书。

转到项目属性并选择“调试”选项卡。在应用程序参数中,添加以下内容:

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

您还可以将证书包含在您的项目中,并将其设置为“如果更新则复制”以将其部署到您的 bin。


2
投票

Azure Function Core Tools (V2) 现在具有新的开关,因此您不必再使用 --cert 和 --password 开关。您现在可以使用:

host start --useHttps --useDefaultCert

此外,为了完整起见,您可以使用以下方法为 dotnet core 创建本地自签名证书:

dotnet dev-certs https --trust

1
投票

除了 @cindy-pau 的出色答案之外,如果您尝试从 Visual Studio 进行调试(可能有多个启动项目),函数将从“[PROGRAM_FILES]\dotnet”启动,它将找不到“certificate.pfx” ”。如果开发人员具有不同的源根,那么使用绝对路径是不好的。看起来 VisualStudio 宏在将参数传递给 Functions Runtime 之前确实已展开,因此您可以使用 $(ProjectDir) 之类的内容通过

Debug->General->LaunchProfiles->Command Line Arguments
对话框查找项目相关证书。

--port 7114 --useHttps --cert $(ProjectDir)\certificate.pfx --password "XXXXXX"


1
投票

我无法让它工作,在浏览器中不断收到“NET::ERR_CERT_AUTHORITY_INVALID”。当我这样做时它开始工作:

  1. 删除了所有友好名称为“功能开发”的证书
  2. 如上生成pfx
  3. 将 pfx 导入证书存储位置“受信任的根证书颁发机构”
  4. 重新启动我的机器

0
投票

我在项目创建期间接受默认的 AuthorizationLevel.Function 进行功能授权时偶然发现了这一点。 AuthorizationLevel.Anonymous 不需要证书和 SSL。假设您在 Azure 中设置授权,则此选项很好,除非您有特殊需要在本地处理授权。

© www.soinside.com 2019 - 2024. All rights reserved.