這篇文章主要介紹.Net Core和jexus如何配置HTTPS服務(wù),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供龍門(mén)網(wǎng)站建設(shè)、龍門(mén)做網(wǎng)站、龍門(mén)網(wǎng)站設(shè)計(jì)、龍門(mén)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、龍門(mén)企業(yè)網(wǎng)站模板建站服務(wù),十多年龍門(mén)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。一、環(huán)境介紹
1、Linux下在Docker容器中部署好了一個(gè)網(wǎng)站,該網(wǎng)站需要通過(guò)外部提供程序訪問(wèn)微軟的登錄平臺(tái),利用的是OAuth3.0協(xié)議,因此要求必須要使用SSL服務(wù),也使得網(wǎng)站必須要加入HTTPS服務(wù)。
2、容器外,宿主機(jī)上通過(guò)jexus做端口轉(zhuǎn)發(fā)。(本沒(méi)打算用到j(luò)exus,但是看到情形不對(duì),還是必須把它拉入進(jìn)來(lái))
3、HTTPS服務(wù)需要證書(shū),通過(guò)在騰訊云上申請(qǐng)免費(fèi)證書(shū)https://console.cloud.tencent.com/ssl,一天之內(nèi)便可申請(qǐng)到,注意了?。?!,假如說(shuō)使用的和我一樣也是用的jexus,而騰訊云提供的證書(shū)下載包里面沒(méi)有jexus,只有IIS、Nginx、Apache..等等,
我們是可以直接利用Nginx的兩個(gè)文件。第一個(gè)是crt文件,第二個(gè)是key文件。
假如說(shuō)你需要pfx結(jié)尾的文件那么可以通過(guò)這兩個(gè)文件進(jìn)行合成生成pfx文件可以通過(guò)命令:
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
將其中文件名更改為你的文件名即可。又或者度娘上也有將內(nèi)容粘貼進(jìn)去然后自動(dòng)生成的網(wǎng)站,不要敲命令的,這就不再提供網(wǎng)站了。
二、全配置
首先,我想說(shuō)下,我在jexus中配置了HTTPS服務(wù),在Docker容器中運(yùn)行的網(wǎng)站中也配置好了HTTPS服務(wù)。如同此圖:
可能有人會(huì)想,為什么都要配置,只配置jexus就足夠了啊。當(dāng)然,配置jexus是足夠了,但是我的網(wǎng)站里面如果需要調(diào)用比如OAuth3.0協(xié)議支持的網(wǎng)站時(shí),回掉地址總是會(huì)是用的HTTP協(xié)議,開(kāi)發(fā)環(huán)境下沒(méi)問(wèn)題,但是一旦弄上域名或是IP地址訪問(wèn),那么生成的就是HTTP的協(xié)議了。
具體就是在此處.我通過(guò)配置好了微軟的外部提供程序,當(dāng)點(diǎn)擊按鈕后將跳轉(zhuǎn)到微軟登錄頁(yè)面:
跳轉(zhuǎn)后,當(dāng)前登錄頁(yè)面的url中寫(xiě)明了一些參數(shù)是我們想要的,比如redirect_url,此時(shí)我已經(jīng)配置好了網(wǎng)站上的HTTPS協(xié)議,在沒(méi)有配上時(shí),該處的redirect_url一直都是HTTP的
好了,開(kāi)始配置HTTPS服務(wù):
1、在.Net Core中配置HTTPS協(xié)議
首先,這里可能要搞清楚一下,jexus和網(wǎng)站之間的請(qǐng)求轉(zhuǎn)發(fā),這也是我想弄清楚的一個(gè)問(wèn)題,jexus端口轉(zhuǎn)發(fā)請(qǐng)求的時(shí)候是不是還是HTTPS協(xié)議的,還是說(shuō)只是請(qǐng)求轉(zhuǎn)發(fā),到了網(wǎng)站中又變成了HTTP了。就如這個(gè)模型,在jexus轉(zhuǎn)發(fā)之后,進(jìn)入kestrel后是HTTP協(xié)議的還是HTTPS協(xié)議的? 希望各位博友幫忙,我沒(méi)有找到參考資料。
我能做的就是在我嘗試在kestrel中不配置HTTPS協(xié)議下,訪問(wèn)網(wǎng)站雖然也是能夠成功的,但是當(dāng)通過(guò)微軟的第三方登錄成功后回調(diào)地址訪問(wèn)網(wǎng)站時(shí),便會(huì)是使用的HTTP協(xié)議,也就會(huì)出問(wèn)題,與OAuth要求使用SSL的服務(wù)必須使用HTTPS協(xié)議相矛盾,也就促使著我必須要在kestrel中配置好HTTPS協(xié)議。具體配置如下:
在Program.cs文件中,加入前面所合成的pfx文件,即可,這種情形下,要求我的每一個(gè)容器中的運(yùn)行的網(wǎng)站都需要使用證書(shū)了。同時(shí)注意,在此處不能夠使用.UseUrls("https:"//:443")來(lái)設(shè)置HTTPS服務(wù),在沒(méi)有配置.UseKestrel()下是會(huì)報(bào)錯(cuò)的,望注意!
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Server.Kestrel.Core; using System.Security.Cryptography.X509Certificates; using System.Net; using Identity.Api.Web.Core; namespace Identity.Api { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) //.UseJexusIntegration() .UseKestrel(options => { options.Listen(IPAddress.Any, 1101, listenOptions => { var certificate = new X509Certificate2("hdshopserver.pfx", "你的證書(shū)密碼"); listenOptions.UseHttps(certificate); }); }) .UseStartup<Startup>() .Build(); } }
2、在jexus上配置HTTPS協(xié)議(假如說(shuō)用的不是jexus或是沒(méi)有用到j(luò)exus,則可跳過(guò)此處)
首先,通過(guò)命令查看到我的jexus版本是5.8.3,是支持HTTPS的了。
進(jìn)入你的jexus配置文件夾,我用圖形表示更加直觀點(diǎn):
具體的jexus的各種文件功能不再介紹,此處只針對(duì)配置證書(shū)服務(wù),需要查看可看基于Jexus-5.6.3使用詳解
我們可以在jws.conf中配置整個(gè)服務(wù)器上的所有網(wǎng)站都令其使用HTTPS服務(wù):
也可在siteconf中配置你需要的單獨(dú)的網(wǎng)站中使用HTTPS服務(wù):
通過(guò)UseHttps=true和配置好前面所提到的兩個(gè)文件,jexus的HTTPS服務(wù)算是搞定了.然后可以通過(guò)https://域名進(jìn)行查看,假如說(shuō)不能成功,可以在jexus文件夾下的log文件中查看信息,這很關(guān)鍵!!。
在jexus的配置上還需要感謝@無(wú)語(yǔ)1994的幫助,剛配置時(shí),用的是自己在服務(wù)器上通過(guò)命令生成的證書(shū),不管怎樣,都不能看到到網(wǎng)站頁(yè)面,然后通過(guò)使用騰訊云上的證書(shū),擺平!
通過(guò)兩次配置后我的網(wǎng)站便可使用HTTPS服務(wù)了,也因此,在使用微軟的外部提供程序上登錄微軟第三方頁(yè)面也就沒(méi)問(wèn)題了,可以正?;卣{(diào)顯示了。
如想查看,可以訪問(wèn)https://www.hdshop.xyz:1101/。通過(guò)登錄按鈕調(diào)用微軟登錄頁(yè)面。
三、個(gè)人總結(jié)
在配置方面,走了不少?gòu)澛?,首先是只是想到在網(wǎng)站中進(jìn)行配置,但是嘗試起來(lái)發(fā)現(xiàn),當(dāng)我將jexus關(guān)閉后sh /usr/jexus/jws stop,也就是直接將網(wǎng)站面向外網(wǎng),可以進(jìn)行訪問(wèn)成功。
此時(shí),每個(gè)容器中的網(wǎng)站都各自配置了HTTPS服務(wù),但是想到這里便會(huì)感覺(jué)每個(gè)網(wǎng)站都配置的話,有點(diǎn)冗余,那么直接在jexus上配置呢。當(dāng)然可以,
通過(guò)在jexus上配置完畢,去掉每個(gè)網(wǎng)站上各自配置的HTTPS服務(wù),假如說(shuō)一個(gè)網(wǎng)站不需要使用到諸如OAuth、微信支付等等要求安全性比較高的,那么jexus上配置HTTPS服務(wù)也就足夠了,但是在使用到那些安全性要求后,自身網(wǎng)站也要配置起HTTPS服務(wù)。也就因此,我被困了好多天,最終的效果是:
四、留下問(wèn)題求助
第一個(gè)問(wèn)題便是在之前提到的那張圖中:
jexus和kestrel之間仍然是以什么方式進(jìn)行傳遞,我看到是利用的tcp,但是舉個(gè)例子,用戶訪問(wèn)的URL是https://xxx.com進(jìn)入jexus,服務(wù)轉(zhuǎn)交到kestrel,在kestrel中接收的是https://xxx.com還是http://xxx.com,還是說(shuō)其他的方式。
第二個(gè)問(wèn)題便是在配置過(guò)程中,看到微軟提供的HTTP重定向到HTTPS的解決方案,意思是說(shuō)我通過(guò)http訪問(wèn)后會(huì)將http的訪問(wèn)請(qǐng)求轉(zhuǎn)變成https的訪問(wèn)請(qǐng)求嗎?也就是說(shuō)支持http和https的兩種方式,是否?
以上是“.Net Core和jexus如何配置HTTPS服務(wù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享名稱:.NetCore和jexus如何配置HTTPS服務(wù)-創(chuàng)新互聯(lián)
URL鏈接:http://aaarwkj.com/article36/dshgsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、域名注冊(cè)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站制作、App設(shè)計(jì)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容