无法在 Windows docker 容器中配置 ASP.NET HTTPS 端点

2024-05-08

在 Windows docker 容器中运行 ASP.NET Core 时出现此错误...

Unhandled Exception: System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found.

我能够让它发挥作用......

RUN dotnet dev-certs https

但我想安装一个实际的证书......现在是一个自签名证书,但后来是一个真正的证书。

因此,根据题为“使用 Powershell 在 Windows 容器中导入并绑定 SSL 证书”的博客文章,我创建了以下 PS 脚本以在容器构建中运行...

Import-PfxCertificate -FilePath C:\Certificates\xxx.pfx -Password (ConvertTo-SecureString -String "xxxx" -AsPlainText -Force) `
-CertStoreLocation "Cert:\LocalMachine\My"

$cert = (Get-ChildItem -Path cert:\LocalMachine\My -DNSName "xxx.mydomain.com")[0]

$thumb =  ($cert | Select-Object Thumbprint)."Thumbprint"
$guid = [guid]::NewGuid().ToString("B")

netsh http add sslcert ipport=0.0.0.0:5001 certhash=$thumb certstorename=MY appid="$guid"

这构建得很好并且似乎安装了证书。但是当我尝试运行容器时出现异常。我尝试使用 443 而不是 5001,同样的错误

这是我的 docker 文件供参考...

 escape=`
 FROM xxx/base
 EXPOSE 5000
 EXPOSE 5001
 COPY testing/ /testing
 COPY service/ /Service
 COPY certificates/ /certificates
 COPY scripts/ /scripts

 # install certificates

 RUN scripts/Install-Container-Certificate.ps1

 # configure ASP.NET Core

 ENV ASPNETCORE_URLS http://+:80;https://+:443
 EXPOSE 80
 EXPOSE 443
 # RUN dotnet dev-certs https
 # start ASP.NET Core

 ENTRYPOINT ["dotnet","/Service/xxxService.dll"]

我究竟做错了什么?


如果您想使用自签名证书在开发中运行,您可以遵循here https://github.com/dotnet/dotnet-docker/blob/master/samples/run-aspnetcore-https-development.md文章。对于生产场景here https://github.com/dotnet/dotnet-docker/blob/master/samples/host-aspnetcore-https.md.

简而言之,建议的方法与您正在使用的方法不同,因为可以引用包含您的证书和 dotnet 机密的文件夹来安装两个卷。

您可以将主机“%USER%\.aspnet\https”文件夹映射到来宾“/root/.aspnet/https/”,并将主机“%APPDATA%\microsoft\UserSecrets\”文件夹映射到来宾“/root/” .microsoft/usersecrets”。

生产和开发之间的主要区别在于,在生产中您不会使用机密,您需要传递包含证书和密码的文件夹才能使用环境变量访问它:

  • ASPNETCORE_Kestrel__证书__默认__路径
  • ASPNETCORE_Kestrel__证书__默认__密码

Kestrel 将在您的 Linux 客户机上的“/root/.aspnet/https/”文件夹中查找与您的项目同名的证书。

如果我使用您的 appsettings.Development.json 启用跟踪:




      "Logging": {
        "LogLevel": {
          "Default": "Trace ",
          "System": "Trace ",
          "Microsoft": "Trace"
        }
      }

  

如果我在没有在来宾容器中安装证书的情况下开始运行示例应用程序,我会看到以下错误:




    root@7afc71f877ce:/app# dotnet helloworld.dll
    dbug: Microsoft.Extensions.Hosting.Internal.Host[1]
          Hosting starting
    dbug: Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer[2]
          Failed to locate the development https certificate at '/root/.aspnet/https/helloworld.pfx'.
    dbug: Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer[1]
          Unable to locate an appropriate development https certificate.
    crit: Microsoft.AspNetCore.Server.Kestrel[0]
          Unable to start Kestrel.
    System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.
    To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.

  

希望能帮助到你。

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

无法在 Windows docker 容器中配置 ASP.NET HTTPS 端点 的相关文章

  • 实时/热重载不适用于 dockerized NestJS API

    我遇到了一个奇怪的问题 我目前正在使用 Windows 10 并通过 WSL2 运行 docker 我在 Windows 文件管理器中克隆了存储库 并且我尝试在 DEV 中运行它 也就是说 一旦我更新了在我的本地存储库中的文件中 此更改反映
  • appsettings.json 是否受 IIS 保护?

    在旧版 ASP NET 应用程序中 config files cannot通过导航到 URL 即可下载 但新的约定是使用appsettings json 现在 如果我有一个名为的 ASP NET Core 网站contoso com它由 I
  • 在 docker 镜像中包含层有哪些优点?

    假设我有两个不同的 Dockerfile 图像一名为 nudoc my base image 1 1 FROM ubuntu 16 10 COPY test war 图像二名为 nudoc my testrun image 1 1 FROM
  • 重写 ASP.Net Core 中的 415 响应

    在 ASP net Core 2 1 中 我想返回 Json 响应以及状态代码 415 而不是默认返回的 415 为了实现这一点 我使用资源过滤器 public class MediaTypeResouceFilter Attribute
  • 如何在Powershell控制台中分配多行字符串

    当我在 powershell 控制台中输入此内容时 test Test Test 并且输入多次 它会一直打印 gt gt 所以我永远无法完成命令 该怎么办 应该是行中的第一件事 或者它被认为只是字符串的一部分 test Test Test
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • 如何在 Docker 多阶段构建层中缓存 Maven 依赖项和插件?

    我想将 Maven 依赖项缓存在我的构建阶段的一层中Docker 多阶段构建 https docs docker com engine userguide eng image multistage build 我的 Dockerfile 如
  • 如何在 ASP.NET Core 中启动 Quartz?

    我有以下课程 public class MyEmailService public async Task
  • 无法解析 docker 容器之间的主机名

    我在单独的撰写文件中创建了两个容器 用于应用程序隔离 每个应用程序可能在撰写文件中定义了多个容器 例如后备数据库 这些容器通过名为 common 的外部网络链接 一个示例撰写文件是 version 2 services rabbitmq i
  • .net core 1.1 中嵌入的 power bi

    目前 我正在尝试在 Visual Studio 2017 中为我的 net core 1 1 项目导入 powerbi 包 但是 我收到以下错误 Install Package Package Microsoft PowerBI Core
  • 如何使用 docker exec 运行 2 个命令

    我需要使用 docker exec 运行 2 个命令 我正在从 docker 容器中复制文件 并且不想处理凭据才能使用 ssh 之类的东西 该命令复制一个文件 sudo docker exec boring hawking tar cv v
  • 如何在arm64主机上运行amd64 docker镜像

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 2021 07 28 22 25 06 349222 F tensorflow core platform cpu
  • 无法在 cmd 中通过管道传递 cmdlet 对象

    我正在使用这个 powershell 命令来获取特定的用户配置文件 获取 WmiObject Class Win32 UserProfile Where Object LocalPath eq C Users Pela 但是当我通过调用 p
  • 在 mkdir 之后触摸文件时构建 Dockerfile 失败

    我是 Docker 新手 尝试使用简单的 Dockerfile 构建映像 FROM jenkins USER root RUN mkdir pv home a b RUN touch home a b test txt RUN mkdir
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • 使用 docker-compose 从私有 GitHub 存储库构建 Docker 镜像

    我知道可以提供 GitHub HTTP URL 作为服务的构建上下文 version 3 9 services my app build https github com rambo my app git 上述方法对于公共回购来说效果很好
  • ASP.NET 5 中的全局异常处理

    如何将自己的日志记录逻辑附加到 ASP NET 5 应用程序以处理业务逻辑和较低层中引发的每个异常 我尝试用自己的ILoggerProvider实施和loggerfactory AddProvider new LoggerProvider
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • 如何在 Visual Studio 2017 中打开 dotnet-core CLI 项目

    我一直在使用 dotnet Core 用于 API 和 Angular2 开发一个简单的应用程序 以便学习两者 我在命令行上使用 Yeoman 创建了项目并且一直在 Visual Studio Code 在 Windows 上 中愉快地进行

随机推荐

  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 为什么.NET中的每个类都继承自Object?

    我不明白 为什么他们需要一个共同的基础 这个问题预设了一个谎言 他们不need一个共同的基础类型 这个选择并不是出于必要 这是出于为客户提供最佳价值的愿望 当设计类型系统或任何其他相关问题时 有时您会遇到决策点 您必须决定 X 或非 X 公
  • Clojure Web 应用程序 - 我从哪里开始?

    最近我一直在研究 Clojure 我喜欢这门语言 我想看看我是否可以在其中制作一个小型网络应用程序 只是为了挑战自己 但是 我完全没有设置任何与 Java 相关的 Web 应用程序的经验 事实上 我对 Java 并没有太多的经验 我从哪说起
  • spring启动时如何加载@Cache?

    我正在使用 spring cache 来改进数据库查询 其工作原理如下 Bean public CacheManager cacheManager return new ConcurrentMapCacheManager books Cac
  • MongoDB - 解释特定的解释输出

    我使用的是 MongoDB 版本 2 4 8 test 2014 03 25 14 42 13 0 gt gt gt db users getIndexes v 1 key id 1 ns test users name id v 1 ke
  • 如何以编程方式在导航栏中设置图片?

    我有一个带有导航栏的详细视图 其中带有后退按钮和视图名称 导航栏以编程方式设置 呈现的名称是这样设置的 self title NSLocalizedString name 该名称取决于所呈现的视图 现在我还想在导航栏上显示一个小图标 这也取
  • 使用简单的 ActionFilterAttribute 运行时出错

    开始编写一个简单的过滤器 从每个操作加载的请求中提取一些内容 从其他 stackoverflow 复制一些代码 如下所示 public class TestKeyAttribute ActionFilterAttribute public
  • Visual Studio 2015 RC:Android 模拟器:安装程序失败。 (代码:1603)

    当我安装 Microsoft Visual Studio 2015 Professional RC 时 出现以下错误 适用于 Android 的 Microsoft Visual Studio 模拟器 安装程序失败 安装过程中发生致命错误
  • Android OpenGLES 渲染到纹理

    我为 iPhone 编写图形应用程序 并且希望将我最新的应用程序 Layers 移植到 Android 平台 Layers 是一款绘画应用程序 允许用户在屏幕上绘画并使用不同的画笔 颜色等创建多层绘画 并导出到 PSD 它有桌面同步 涂抹工
  • 四舍五入到 25、50、75、100

    我不是一个数学爱好者 所以我很难想出一个将小数四舍五入到 25 50 75 和 100 的计算方法 这不会是典型的四舍五入 因为小数不会减少但只增加了 Example 如果 11 12 则舍入为 11 25 如果为 11 34 则舍入为 1
  • ajax jQuery asp.net 错误意外的标记 <

    我在向现有的 asp net 4 网站添加 ajax 功能时遇到问题 我都尝试过在 aspx 页面中创建 webmethod 并尝试过 asmx 但在这两种情况下我都会收到此错误Unexpected token lt 这是我的 jQuery
  • CSS3 矩阵 3d 矩形到梯形的转换

    我正在尝试使用 webkit 对 CSS3 的支持transform matrix3d
  • 在选择选项标签中循环 Ajax 响应

    我必须选择多个测试和日期 当根据测试单击提交时 实验室名称将加载到选择选项中 阿贾克斯脚本 name submits click function e e preventDefault var array select selected e
  • golang从sdin扫描一行数字

    我正在尝试从标准输入读取输入 3 2 1
  • 如何在批处理文件中测试当前驱动器号?

    我正在尝试编写一个批处理文件 该文件获取运行批处理文件的驱动器号 并使用它的 IF 语句 例如如果字母是M 则会跳转到标签 mSection 这可能吗 您可以使用 d0 来获取驱动器号 像这样的东西 IF d0 M CALL mSectio
  • flutter - 尝试从子窗口小部件调用 setState 时未调用回调函数

    我正在使用 VoidCallback 从子小部件调用 setState 但回调函数根本没有执行 下面是我的代码的本质 子部件 class TextFormMentorHashtag extends StatefulWidget const
  • 如何为函数创建 Moq 模拟

    我有以下 Func 方法 我需要模拟它 Func
  • directshow.net 视频输入设备过滤器枚举是否已损坏(在较新的环境中)?

    directshow net 示例文件夹 标记为 2010 February 中的每个示例都可以正常编译 并且那些从文件播放视频的示例效果也很好 但是 每个尝试枚举 FilterCategory VideoInputDevices 的示例始
  • MySQL 偏移无限行

    我想构造一个查询 显示表中的所有结果 但从表的开头偏移 5 据我所知 MySQLLIMIT需要一个限制和一个偏移量 有什么办法可以做到这一点吗 来自MySQL LIMIT 手册 http dev mysql com doc refman 5
  • 无法在 Windows docker 容器中配置 ASP.NET HTTPS 端点

    在 Windows docker 容器中运行 ASP NET Core 时出现此错误 Unhandled Exception System InvalidOperationException Unable to configure HTTP