zoukankan      html  css  js  c++  java
  • 如何在docker配置asp.net core https协议

    本文参考自Step by step: Expose ASP.NET Core over HTTPS with Docker

      自从微软发布.net core以来,就在许多社区掀起了讨论,笔者也是在工作中开始学习.net core/asp.net core的。说实话,在学习开发asp.net core中,笔者遇到了非常多的问题,踩了许多坑,比如.net core1.1版本中没有提供system.drawing类库,笔者只能借用mono的drawing库来实现一些验证码的绘制;又比如.net core中没有office处理类库,又只能寻找第三方开发的EPPLUS.Core来辅助实现excel的处理。在翻过一座座大山、踩过一个个坑之后,终于到了部署阶段,谁想boss说要在docker上部署https让我彻底懵逼了,度娘上找了半天的没一片文章有用,最后还是找了谷哥才把问题解决,所以才想写篇文章,学习一下。

      对于只想把asp.net core部署在iis或者Kestrel部署的可以参考文章

      《NET Core Kestrel部署HTTPS》

      《ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)》

      好,那么进入正题~~

      (1)导入Kestrel Https包

    "Microsoft.AspNetCore.Server.Kestrel.Https": "1.0.1"

      (2)program.cs配置https

            public static void Main(string[] args)
            {
                var host = new WebHostBuilder()
                    .UseKestrel(opt=> {
                        opt.UseHttps("server.pfx", "123456");
                    })
                    .UseUrls("https://*:443")
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    .UseIISIntegration()
                    .UseStartup<Startup>()
                    .Build();
    
                host.Run();
            }

      在配置文件中,我们设置签名文件名为server.pfx,密码为123456,配置端口为443;由于docker是一个容器,运行环境独立,我们需要在容器中用命令创建签名文件。

      (3)编写Dockerfile文件

      在Dockerfile文件中加入创建签名文件命令

    #定义签名密码
    ENV certPassword 123456
     
    RUN openssl genrsa -des3 -passout pass:${certPassword} -out server.key 2048
    RUN openssl rsa -passin pass:${certPassword} -in server.key -out server.key
    RUN openssl req -sha256 -new -key server.key -out server.csr -subj '/CN=localhost'
    RUN openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
    RUN openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile server.crt -passout pass:${certPassword}

      (4)创建docker image

    sudo docker build -t httpssample .

      (5)创建容器

    //前台运行
    sudo docker run -it -p 443:443 httpssample
    
    //后台运行
    sudo docker run -t -d -p 443:443 httpssample

      这样就能访问https://localhost/了

  • 相关阅读:
    转】Linux下安装Tomcat服务器和部署Web应用
    转】数据描述的三个领域
    怎样在嵌入式产品中应用键值存储数据库
    图片预览插件 fancyBox
    请别昧着良心说自己的文章是原创
    学习制作操作系统 0
    HDOJ 5276 YJC tricks time multimap
    日版 Galaxy Note sc05d 涮机
    Android 自己实现 NavigationView [Design Support Library(1)]
    用标准Struts2+mvc写的用户管理
  • 原文地址:https://www.cnblogs.com/billming/p/7131557.html
Copyright © 2011-2022 走看看