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