如何在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/了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM