我正在学习如何使用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关闭 .