我正在学习如何使用SSL在docker(在Windows主机上)上运行我的.net核心Web应用程序 . 我开始使用.net core通过“dotnet new mvc”提供的基本应用程序 .
然后我向前移动并修改了Program.cs中的代码,只在端口443上监听 .
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Listen(IPAddress.Any, 443, listenOptions =>
{
listenOptions.UseHttps("test.com.pfx", "1234");
});
})
.Build();
}
我创建了自签名证书并提到了密码 . 请忽略密码暴露的方式,因为我仍在将此作为POC .
然后我将dockerfile修改为:
FROM microsoft / dotnet WORKDIR / app COPY bin / Debug / netcoreapp2.0 / publish . EXPOSE 443 ENTRYPOINT [“dotnet”,“dotnetssl.dll”]
现在,如果我构建并运行图像:
docker build -t httpssample . docker run -it -p 443:443 httpssample
我无法使用URL https://localhost访问该网站,我也在控制台中打印下面的行:
警告:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [35]未配置XML加密器 . 密钥{9f9e447d-d766-4a7d-9413-03466512b7a9}可以保持以未加密的形式存储 . 警告:Microsoft.AspNetCore.Server.Kestrel [0]无法在IPv6环回接口上绑定到http:// localhost:5000:'错误-99 EADDRNOTAVAIL地址不可用' . 托管环境: 生产环境 内容根路径:/ app现在正在侦听:http:// localhost:5000应用程序已启动 . 按Ctrl C关闭 .