Azure 应用服务容器上的 ASP.net core docker https

2024-03-17

如何让 ASP.net core 在 SSL 上的 docker 中运行并与 Azure 应用服务容器配合使用?

我让它在 HTTP 上工作,但是当我尝试将其绑定到 SSL 以便 ASP.NET 对 oauth 甚至 swagger 等内容的验证能够正常工作时,它无法告诉我“无法配置 HTTPS 端点。没有服务器证书”指定的,但找不到默认的开发者证书。” vs.net 生成的仅运行时映像无法运行开发证书,即使如此,这也会显得不安全,并且可能是由于浏览器中的证书错误造成的。

基本上我需要 https 从外部端点一直工作,以便 kestrel 进行加密等,而不是 ngix 或默认情况下在外部代理上运行的任何内容。

这在 vs.net 调试中工作得很好,因为它不会出现任何错误,并且即使它绑定到 https 也能正常工作。

遗憾的是,该文档仅处理最基本的用例,并没有概述如何让真正的 https 网站与 aspnet core 和 Azure 应用程序容器可靠地工作。


经过到处搜索后,我能够将一堆迟钝的参考资料放在一起并提出解决方案。

Kestrel 将处于 HTTP 模式,但会通过反向代理的 ForwardedHeaders 被告知它处于 HTTPS 模式。对于 Azure,您必须使用一个特定的集合。其他人将需要其他选项,并且可能需要额外的设置。本文档将在一般情况下为您提供帮助,但不包含 Azure 所需的内容:ASPNet Core 反向代理和负载均衡器配置 https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.1

如果您使用的是 IIS,它可以正常工作,因为它是内置的,或者您已在过去版本的 Core 中添加了 UseIIS。

对于容器或基础 Linux 上的 Azure Web 服务,您需要添加以下 Nuget 包:

Microsoft.AspNetCore.HttpOverrides

一旦将其添加到 Startup.cs 中的配置中,您首先需要添加以下内容:

var forwardOptions = new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto,
    RequireHeaderSymmetry = false
};

forwardOptions.KnownNetworks.Clear();
forwardOptions.KnownProxies.Clear();

app.UseForwardedHeaders(forwardOptions);

请注意,如果没有 KnownNetworks 和 KnownProxies Clear(),它将无法工作。如果没有 RequireHeaderSymmetry = false 它将无法工作,因此您需要所有这些。

在 ForwardedHeaders 上,您需要尝试避免使用 .All 或列出的其他选项,因为它存在安全漏洞。

然后在应用程序设置中您需要添加WEBSITES_PORT=80, ASPNETCORE_URLS=http://+:80 and ASPNETCORE_HTTPS_PORT=443。在所有这些都完成之前,您将继续收到略有不同的错误。

注意:这不会修复 Swagger 的验证器。由于验证器错误,它还有其他问题。 json 仍然有效,但域不同,所以很奇怪。解决这个问题的简单方法是在 UseSwaggerUi set options.EnableValidator(null); 中设置 options.EnableValidator(null);

  app.UseSwaggerUI(
        options =>
        {
            options.EnableValidator(null);                  
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure 应用服务容器上的 ASP.net core docker https 的相关文章

随机推荐

  • iOS - Facebook Open Graph API - 让标题显示在用户生成的图像旁边

    我无法在用户生成的照片上显示标题 如下所示 相反 这是一张非用户生成的照片 带有标题和描述 启用用户生成的照片后 通过iOS Facebook Open Graph Api 确保照片是用户生成的 https stackoverflow co
  • SQL 主键:整数与 varchar

    我正在合作的团队决定创建一个带有 varchar 主键的表 该表被该主键上的另一个表引用 我有按照我在大学学到的知识创建整数主键的习惯 我读到使用整数主键可以提高性能 问题是我不知道创建整数主键的任何其他原因 你有什么建议吗 主键应该代表行
  • 我的程序不会根据条件停止

    所以 我的程序不会在条件 str2 o 下停止 因此 如果有人知道原因以及如何解决它 它将帮助我 这是我的代码 include
  • log4j2 未检测到自定义附加程序插件

    我正在尝试为 log4j 2 0 创建自定义附加程序 但在让我的 log4j 配置识别附加程序时遇到问题 我知道 log4j 2 0 不支持配置属性中的包 所以我按照建议尝试了here https stackoverflow com que
  • 在事件操作中突出显示 SVG 中的多个路径元素

    我有一个 SVG 它在一个组中包含多个路径元素 它是一个包含多个岛屿的地图 我希望当用户启动 onclick 等操作时突出显示所有岛屿 每个岛屿由组内的路径表示 我可以通过这样做来突出显示每个元素
  • 创建过程 MySQL

    我试图将一个过程从使用 sql plus 转换为 mysql 但在第三行出现语法错误 其中显示 W IN IN NUMBER 并且 IN 突出显示为语法错误 SQL Plus CREATE OR REPLACE PROCEDURE PRC
  • 移动表格使 IE9 崩溃

    因此 我对导致浏览器崩溃的 IE9 错误感到抓狂 我有一个表 正在使用媒体查询为小屏幕设备重新格式化 这是一些非常巧妙的编码 但是在 IE9 中 当我将浏览器窗口重新调整为大于媒体查询时 它会使 IE9 崩溃 似乎当你尝试从 CSS 中删除
  • 新的 C++11 range-for (foreach) 语法:哪些编译器支持它?

    我在中看到了这个 c 11 代码片段Jeremy Siek 在 BoostCon 上的演讲 http ecee colorado edu siek boostcon2010bgl pdf deque
  • 将数据保存和加载到文件 C++(初学者)

    我有一个包含许多不同变量的类 例如其中有一些多维向量 我听说您可以将数据直接存储和加载到文件中 但是可以到什么程度呢 例如 如果我创建此类的实例 填充它 然后将其保存到文件中 我可以以相同的方式加载它吗 就像那是如何运作的 我是一次性保存所
  • 如何在Android Studio上创建Renderscript脚本并运行它们?

    背景 我想研究如何在 Android 上创建 Renderscript 脚本以及一般的 Renderscript 在过去的一年里 Android Studio 成为 Google 支持 Android 应用程序开发的唯一 IDE 问题 为此
  • SQL vs MySQL:关于聚合操作和 GROUP BY 的规则

    In 这本书 https rads stackoverflow com amzn click com 0072465638我目前正在阅读有关数据库的课程 给出了以下使用聚合运算符的非法查询的示例 找出最年长水手的姓名和年龄 考虑以下尝试回答
  • 使用 readdir() 读取目录时删除文件

    我的代码是这样的 DIR pDir opendir path to my dir struct dirent pFile NULL while pFile readdir Check if it is a zip file if subrs
  • ** IE11 不支持运算符。如何使用代码将其替换为Math.pow?

    我有这个示例公式 97000 5 50 100 12 1 1 5 50 100 12 1 120 问题是此代码在 IE11 中无法正常工作 我尝试过这种方法来替换每个 with Math pow 但我无法让它正常工作 function de
  • word2vec 模型由字符而不是单词组成

    我正在尝试使用 Gensim 在波斯语上制作一个 word2vec 模型 其中以 空格 作为字符分隔符 我使用 python 3 5 我遇到的问题是我给出了一个文本文件作为输入 它返回一个模型 该模型仅包含每个字符而不是单词 我还以推荐的单
  • Drupal 7 - 在#link表单类型条目中添加HTML?

    我需要将 HTML 标记添加到 titleDrupal 7 的领域 type链接表单元素 输出应该大致如下所示 a href saveprogress nojs 123 class ajax processed span class mym
  • YouTube 是否破坏了 iPhone 上的 IFrame 嵌入?

    我们一直在使用 YouTube 的 iframe 嵌入视频 一切皆好 iPhone 上除外 在 iPhone 上 视频占位符图像的拉伸高度约为应有的两倍 播放视频会显示消息 您需要更新您的 Adob e Flash Player 这肯定是不
  • 哪种替代文本最适合屏幕阅读器,例如“微笑的孩子”?

    为一张微笑着坐在花园里的孩子的照片写 ALT 文本哪个会比较好 This alt Photo of smiling kid sitting in the garden or this alt Photo of smiling kid or
  • AWS sdk Java 2.x 中 TransferManager 的替代方案

    TransferManager 类已从 AWS sdk Java 2 x 中删除 TransferManager 的替代方案是什么以及如何使用它 TransferManager 没有被删除 只是 Java 2 X 中还没有实现 https
  • 强制 Eclipse (Helios) 在应用程序运行时使用较新版本的 SWT

    我正在使用 Eclipse Helios 开发一个 RCP 项目 安装的 SWT 版本 在插件目录中 是 org eclipse swt win32 3 6 2 org eclipse swt jar 我需要仅在 swt 3 8 中可用的新
  • Azure 应用服务容器上的 ASP.net core docker https

    如何让 ASP net core 在 SSL 上的 docker 中运行并与 Azure 应用服务容器配合使用 我让它在 HTTP 上工作 但是当我尝试将其绑定到 SSL 以便 ASP NET 对 oauth 甚至 swagger 等内容的