netCore3.x 分布式开发学习笔记——解决NetCore部署到Docker后不能使用Https的问题

4 篇文章 0 订阅
3 篇文章 0 订阅

开发NetCore部署到Docker中遇到不能使用Https的奇怪情况,查询网上并没有找到合适的方法,通过对比分析已解决这个问题,现记录下来.

表现情况为:

程序运行方式80端口(HTTP)443端口(HTTPS)
IIS调试或运行正常正常
控制台调试或运行正常正常
VS中通过Docker调试正常正常
VS中通过Docker调试后,当停止调试,"容器"中的镜像并没有中止
1.停止调试后,镜像未停止正常404
2.直接生成镜像并发布正常404
关键问题在以Docker形式运行,不能使用443端口,准确的说是不能以HTTPS方式来访问.
一开始还以为是没有开启https,在Program中添加webBuilder.UseUrls("https://*:443");发现并没有作用.

后来经过反复测试发现是没加证书文件.

按网上知识,netcore使用证书有两种方法:

1.在Program中添加(但我使用此方法问题依旧)

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("https://*:443");
                    webBuilder.ConfigureKestrel(options =>
                    {
                        options.Listen(IPAddress.Loopback, 443,
                            listenOptions => { listenOptions.UseHttps("socialnetwork.pfx", "xxx"); });
                    });
                    webBuilder.UseStartup<Startup>();
                });

2.在appsettings.json中添加

  "Kestrel": {
    "Endpoints": {
      "HttpsInlineCertFile": {
        "Url": "https://*:443",
        //"Protocols": "Http2",
        "Certificate": {
          "Path": "socialnetwork.pfx",
          "Password": "xxx"
        }
      }
    }
  }

添加证书不要忘了将证书也打包进Docker,经过上述修改,不管是Docker本地调试还是部署到服务器中都能够正常使用Https了.

这里用到的socialnetwork.pfx是我自己创建的证书,Password是创建证书时设置的密码.

生成证书的方法有很多,我参考的是这篇
https://www.cnblogs.com/liuxiaoji/p/10790057.html
部署到生产环境还是正规点好.

完.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值