如何在Windows Docker容器和运行.net核心模板的Windows主机中安装开发证书?

时间:2018-06-09 05:25:10

标签: docker asp.net-core ssl-certificate

我使用Visual Studio模板添加Docker支持,用户机密具有证书密码,用户机密和证书作为卷安装在docker-compose.override.yml中:

volumes:
      - ${APPDATA}/ASP.NET/Https:C:\Users\ContainerUser\AppData\Roaming\ASP.NET\Https:ro
      - ${APPDATA}/Microsoft/UserSecrets:C:\Users\ContainerUser\AppData\Roaming\Microsoft\UserSecrets:ro

我甚至连接到容器以验证证书是否在Https文件夹中。它由于某种原因没有安装。运行应用程序会引发错误,证明证书存储中不存在开发证书。我该怎么安装呢?是否有我需要的设置,以便它自动安装在容器中?

确切的错误消息:

  

System.InvalidOperationException:'无法配置HTTPS端点。   未指定服务器证书和默认开发人员   证书无法找到。

我可以按照错误说明创建证书,并使用以下命令将其添加到容器中:

dotnet dev-certs https
dotnet dev-certs https --trust

但是.net sdk没有安装在最终容器中,只安装在.net核心运行时。

2 个答案:

答案 0 :(得分:1)

不确定这是否对任何人都有帮助,但我最近遇到了此问题,并找到了一种方法来更正我的情况。这不是永久性的解决方案,只是为了使我现在可以在本地进行开发。

docker-compose.override.yml 文件中,我将 ASPNETCORE_ENVIRONMENT 更改为 < em>生产 开发

发布即时消息时,我只需要记住将其恢复。

enter image description here

注意:我是Docker的新手,所以请放轻松。随时编辑此答案以改善任何人。

答案 1 :(得分:0)

请注意,如果我使用我的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'.

希望有帮助。