在SSL上运行基本的.NET Core MVC应用程序,Docker容器中的HTTPS

时间:2018-02-21 06:38:23

标签: docker asp.net-core .net-core dockerfile asp.net-core-2.0

我正在学习如何使用SSL在docker(在Windows主机上)上运行我的.net核心Web应用程序。我开始使用.net核心提供的基本应用程序" 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 [&#34; dotnet&#34;,&#34; dotnetssl.dll&#34;]

现在如果我用以下内容构建并运行图像:

  

docker build -t httpssample。

     

docker run -it -p 443:443 httpssample

我无法使用网址https://localhost访问该网站,我也在控制台中打印下面的行:

  

警告:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [35]         未配置XML加密器。密钥{9f9e447d-d766-4a7d-9413-03466512b7a9}可以保持以未加密的形式存储。   警告:Microsoft.AspNetCore.Server.Kestrel [0]         无法绑定到IPv6环回接口上的http://localhost:5000:&#39;错误-99 EADDRNOTAVAIL地址不可用&#39;。   托管环境:生产   内容根路径:/ app   现在听取:http://localhost:5000   申请开始了。按Ctrl + C关闭。

0 个答案:

没有答案