日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

合格的web后端程序員,除搬磚技能,還必須會(huì)給各種web服務(wù)器啟用Https,本文結(jié)合ASP.NET Core部署模型聊一聊啟用Https的方式。

溫故知新

目前常見(jiàn)的Http請(qǐng)求明文傳輸,請(qǐng)求可能被篡改,訪問(wèn)的站點(diǎn)可能被偽造。

HTTPS是HTTP加上TLS/SSL協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,主要通過(guò)數(shù)字證書、加密算法、非對(duì)稱密鑰等技術(shù)完成互聯(lián)網(wǎng)數(shù)據(jù)傳輸加密,實(shí)現(xiàn)互聯(lián)網(wǎng)傳輸安全保護(hù)。

ASP.NET Core和Https

流程解讀

① 傳輸密鑰是對(duì)稱密鑰,用于雙方對(duì)傳輸數(shù)據(jù)的加解密

② 怎么在傳輸之前確立傳輸密鑰呢?

答:針對(duì)普遍的多客戶端訪問(wèn)受信web服務(wù)器的場(chǎng)景, 提出非對(duì)稱密鑰(公鑰下發(fā)給客戶端,私鑰存于web服務(wù)器),雙方能互相加解密,說(shuō)明中間數(shù)據(jù)(傳輸密鑰)沒(méi)被篡改。

③ 再拋出疑問(wèn),客戶端如何認(rèn)定下發(fā)的公鑰是目標(biāo)web服務(wù)器的公鑰?又如何確定公鑰下發(fā)過(guò)程沒(méi)被截取篡改?

答:追溯到握手階段的證書驗(yàn)證過(guò)程,瀏覽器從證書提取(證書頒發(fā)機(jī)構(gòu),證書綁定的域名,證書簽名,證書有效期);瀏覽器先驗(yàn)證證書綁定的域名是否與目標(biāo)域名匹配;瀏覽器內(nèi)置證書頒發(fā)機(jī)構(gòu)認(rèn)定該證書是其有效下發(fā);通過(guò)簽名認(rèn)定該證書沒(méi)被篡改

④ 所以瀏覽器內(nèi)置的證書機(jī)構(gòu)(根證書)的權(quán)威性很重要, 中毒或山寨瀏覽器可能攜帶非法的根證書。

如果面向面試記憶Https原理,恐怕有些難度,所以個(gè)人用一種 【雞生蛋還是蛋生雞】的方式向上追溯流程, 方便大家知其然更知其所以然。

下面演示對(duì)ASP.NET Core程序兩種常見(jiàn)部署模型強(qiáng)制應(yīng)用Https。

常規(guī)反向代理模型

ASP.NET Core和Https

由Nginx反向代理請(qǐng)求到后端https://receiver.server, 在nginx上添加HTTPS證書, 并強(qiáng)制使用HTTPS。

worker_processes 4;events { worker_connections 1024; }http { sendfile on; upstream receiver_server { server receiver:80; } server { listen 80; listen [::]:80; server_name eqid.******.com; return 301 https://eqid.******.com$request_uri; }
 server { listen 443 ssl; listen [::]:443 ssl; ssl on; server_name eqid.******.com;
 ssl_certificate /conf.crt/live/******.com.crt; ssl_certificate_key /conf.crt/live/******.com.key; location / { proxy_pass http://receiver_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_redirect off; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }}

dotnet.exe自宿模型

Kestrel用作邊緣(面向Internet)Web服務(wù)器, 這個(gè)部署模型不常見(jiàn),但依舊存在。

ASP.NET Core和Https

我們利用 Visual Studio 2019項(xiàng)目模板構(gòu)建 ASP.NetCore項(xiàng)目--- 勾選HTTPS支持, 會(huì)默認(rèn)添加支持Https的Middleware;

  • App.UseHttpsRedirection 強(qiáng)制Http請(qǐng)求跳轉(zhuǎn)到Https

  • app.UseHsts 指示瀏覽器為特定主機(jī)頭在特定時(shí)間范圍內(nèi)的所有通信應(yīng)用Https。

HSTS(HTTP Strict Transport Protocol)的作用是強(qiáng)制瀏覽器使用HTTPS與服務(wù)器創(chuàng)建連接,避免原有的301重定向Https時(shí)可能發(fā)生中間人劫持。

服務(wù)器開(kāi)啟HSTS的方法是,當(dāng)客戶端通過(guò)HTTPS發(fā)出請(qǐng)求時(shí),在服務(wù)器返回的超文本傳輸協(xié)議響應(yīng)頭中包含Strict-Transport-Security字段。非加密傳輸時(shí)設(shè)置的HSTS字段無(wú)效。

Development證書

VS模板構(gòu)建的web會(huì)使用dotnet cli 提供的開(kāi)發(fā)證書在https://localhost:5001 地址接收請(qǐng)求。

關(guān)于開(kāi)發(fā)證書, 可倒騰 dotnet dev-certs https --help 命令:

dotnet dev-certs https -c清除證書,啟動(dòng)程序會(huì)報(bào)無(wú)服務(wù)器證書異常

dotnet dev-certs https -t信任證書,會(huì)彈窗提示確認(rèn)安裝名為localhost的開(kāi)發(fā)根證書:

- 否:web能正常啟動(dòng),Https請(qǐng)求將獲取無(wú)效證書,瀏覽器地址欄警示不安全(提示瀏覽器不信任localhost根證書,證書無(wú)效)

- 是:web正常啟動(dòng),瀏覽器發(fā)在地址欄顯示正常的Httsp小鎖?圖標(biāo)

在windows上,最安全方式是使用certificate store來(lái)注冊(cè)已認(rèn)證的HTTPS,但是有時(shí)候希望在程序內(nèi)綁定證書+私鑰, 這樣便于在不同平臺(tái)上部署。

文件證書

ASP.NET Core支持使用硬盤上文件證書來(lái)建立Https連接(這在linux上很常見(jiàn))。

以下代碼允許Kestrel傳入文件證書和私鑰,并建立Https連接。

public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseKestrel(options => { options.Listen(IPAddress.Loopback, 5000); options.Listen(IPAddress.Loopback, 5001, listenOptions => { listenOptions.UseHttps("certificate.pfx", "topsecret"); }); }) .UseStartup<Startup>;

務(wù)必確保不要將私鑰存儲(chǔ)在配置文件中:在開(kāi)發(fā)模式,可使用user secrets 存儲(chǔ)此類密鑰;在生產(chǎn)模式,可考慮Azure Key Vault或環(huán)境變量。

更多密鑰分離策略請(qǐng)參考: 密鑰分離,.Net程序猿不再背鍋

總結(jié)

希望本文有助于您大致了解ASP.NET Core中Https的應(yīng)用方式。

這不是什么高深的理論,而是嘗試以不同的方式啟用Https、并著重解釋相關(guān)中間件的用法。

END

分享到:
標(biāo)簽:Https
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定