【发布时间】:2019-02-09 13:33:49
【问题描述】:
我正在尝试创建一个在 Docker 中运行并强制使用 HTTPS 的简单 ASP.NET-Core 2.1 Web 应用程序。
如果我不强制使用 HTTPS,Web 应用程序在 Docker 实例中运行良好。如果我强制使用 HTTPS,或者手动尝试访问 HTTPS 端口,我会收到“无法连接”错误或类似的讨厌的东西。
因此,据我了解,我需要以某种方式将受信任的自签名开发证书从我的 localhost 开发机器复制到 Docker 实例。
幸运的是,有一些很好的文档可以帮助解释/讨论这一点:
- https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/aspnetcore-docker-https-development.md
- https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/aspnetcore-docker-https.md
- https://github.com/aspnet/Docs/issues/3310
- https://github.com/aspnet/Docs/issues/6199
但每次我尝试开始第一个主要步骤 -> 创建证书时,我都会收到以下错误:
C:\Users\justi>dotnet dev-certs https --clean
Cleaning HTTPS development certificates from the machine. A prompt might get displayed to confirm the removal of some of the certificates.
C:\Users\justi>dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\hornet.apigateway.website.public.pfx -p secretpassword
A valid HTTPS certificate is already present.
但如您所见,我只是尝试清理我的证书存储(我确实被要求确认删除证书),然后尝试创建一个新的。
以上命令基于以上链接中的示例。
我觉得错误信息不正确,没有显示真实错误信息?
更新
以防万一我弄乱了我的 Docker 文件,这是我的 2x docker-compose 文件:
docker-compose.yml
apigateway.website.public:
image: hornet/apigateway.website.public
build:
context: .
dockerfile: src/Api Gateways/ApiGateway.Website.Public/Dockerfile
#ports:
# - "5000:443"
depends_on:
- microservice1.api
- microservice2.api
docker-compose.override.yml
apigateway.website.public:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://localhost;http://localhost
- ASPNETCORE_HTTPS_PORT=5001
ports:
# NOTE: need to copy the dev cert over to the container
# REF: o) https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/aspnetcore-docker-https-development.md
# o) https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/aspnetcore-docker-https.md
# o) https://github.com/aspnet/Docs/issues/3310
# o) https://github.com/aspnet/Docs/issues/6199
- "5000:80"
- "5001:443"
volumes:
- ${APPDATA}/Microsoft/UserSecrets/:/root/.microsoft/usersecrets
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https/
【问题讨论】:
-
这里有更详细的解释:humankode.com/asp-net-core/…
-
我查看了那个 url/link,感觉它没有针对 aspnet-core 2.1 进行优化......例如全局工具等。
-
最初可以尝试让 ssl 在没有 docker 的情况下工作..
-
是的 - 如 OP 中所述,http 和 https 在本地和 docker 之外运行站点时工作。并且强制重定向也可以正常工作。
标签: docker asp.net-core https .net-core