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/了

  • 相关阅读:
    解决VTune错误.../lib64/libstdc++.so.6: version `GLIBCXX_3.4.14&#39; not found (required by ...)
    【环境配置】配置sdk
    Eclipse设置Android Logcat输出字体大小
    Vertica数据库操作
    hihoCoder#1038 : 01背包
    初识Dubbo 系列之4-Dubbo 依赖
    计算机相关专业的同学该怎么用自己的计算机
    十天学习PHP之第三天
    Android之Fragment的优点和作用
    Fragment的生命周期
  • 原文地址:https://www.cnblogs.com/billming/p/7131557.html
Copyright © 2011-2022 走看看