欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net Core和jexus配置HTTPS服務(wù)方法

 更新時間:2018年02月26日 08:26:21   作者:微笑刺客D  
下面小編就為大家分享一篇.Net Core和jexus配置HTTPS服務(wù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

花了幾天時間,看了好多篇博客,終于搞定了網(wǎng)站的HTTPS服務(wù),借此寫篇博客,來讓有需要的朋友少走彎路。

一、環(huán)境介紹

1、Linux下在Docker容器中部署好了一個網(wǎng)站,該網(wǎng)站需要通過外部提供程序訪問微軟的登錄平臺,利用的是OAuth2.0協(xié)議,因此要求必須要使用SSL服務(wù),也使得網(wǎng)站必須要加入HTTPS服務(wù)。

  

2、容器外,宿主機上通過jexus做端口轉(zhuǎn)發(fā)。(本沒打算用到j(luò)exus,但是看到情形不對,還是必須把它拉入進來)

3、HTTPS服務(wù)需要證書,通過在騰訊云上申請免費證書https://console.cloud.tencent.com/ssl,一天之內(nèi)便可申請到,注意了?。。?,假如說使用的和我一樣也是用的jexus,而騰訊云提供的證書下載包里面沒有jexus,只有IIS、Nginx、Apache..等等,

我們是可以直接利用Nginx的兩個文件。第一個是crt文件,第二個是key文件。

假如說你需要pfx結(jié)尾的文件那么可以通過這兩個文件進行合成生成pfx文件可以通過命令:

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

將其中文件名更改為你的文件名即可。又或者度娘上也有將內(nèi)容粘貼進去然后自動生成的網(wǎng)站,不要敲命令的,這就不再提供網(wǎng)站了。

二、全配置

首先,我想說下,我在jexus中配置了HTTPS服務(wù),在Docker容器中運行的網(wǎng)站中也配置好了HTTPS服務(wù)。如同此圖:

  

可能有人會想,為什么都要配置,只配置jexus就足夠了啊。當然,配置jexus是足夠了,但是我的網(wǎng)站里面如果需要調(diào)用比如OAuth2.0協(xié)議支持的網(wǎng)站時,回掉地址總是會是用的HTTP協(xié)議,開發(fā)環(huán)境下沒問題,但是一旦弄上域名或是IP地址訪問,那么生成的就是HTTP的協(xié)議了。

具體就是在此處.我通過配置好了微軟的外部提供程序,當點擊按鈕后將跳轉(zhuǎn)到微軟登錄頁面:

跳轉(zhuǎn)后,當前登錄頁面的url中寫明了一些參數(shù)是我們想要的,比如redirect_url,此時我已經(jīng)配置好了網(wǎng)站上的HTTPS協(xié)議,在沒有配上時,該處的redirect_url一直都是HTTP的

好了,開始配置HTTPS服務(wù):

1、在.Net Core中配置HTTPS協(xié)議

首先,這里可能要搞清楚一下,jexus和網(wǎng)站之間的請求轉(zhuǎn)發(fā),這也是我想弄清楚的一個問題,jexus端口轉(zhuǎn)發(fā)請求的時候是不是還是HTTPS協(xié)議的,還是說只是請求轉(zhuǎn)發(fā),到了網(wǎng)站中又變成了HTTP了。就如這個模型,在jexus轉(zhuǎn)發(fā)之后,進入kestrel后是HTTP協(xié)議的還是HTTPS協(xié)議的? 希望各位博友幫忙,我沒有找到參考資料。

    

我能做的就是在我嘗試在kestrel中不配置HTTPS協(xié)議下,訪問網(wǎng)站雖然也是能夠成功的,但是當通過微軟的第三方登錄成功后回調(diào)地址訪問網(wǎng)站時,便會是使用的HTTP協(xié)議,也就會出問題,與OAuth要求使用SSL的服務(wù)必須使用HTTPS協(xié)議相矛盾,也就促使著我必須要在kestrel中配置好HTTPS協(xié)議。具體配置如下:

在Program.cs文件中,加入前面所合成的pfx文件,即可,這種情形下,要求我的每一個容器中的運行的網(wǎng)站都需要使用證書了。同時注意,在此處不能夠使用.UseUrls("https:"http://:443")來設(shè)置HTTPS服務(wù),在沒有配置.UseKestrel()下是會報錯的,望注意!

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", "你的證書密碼");
   listenOptions.UseHttps(certificate);
   });
  })
  .UseStartup<Startup>()
  .Build();
 }
}

2、在jexus上配置HTTPS協(xié)議(假如說用的不是jexus或是沒有用到j(luò)exus,則可跳過此處)

首先,通過命令查看到我的jexus版本是5.8.3,是支持HTTPS的了。

  

進入你的jexus配置文件夾,我用圖形表示更加直觀點:

具體的jexus的各種文件功能不再介紹,此處只針對配置證書服務(wù),需要查看可看基于Jexus-5.6.3使用詳解

我們可以在jws.conf中配置整個服務(wù)器上的所有網(wǎng)站都令其使用HTTPS服務(wù):

也可在siteconf中配置你需要的單獨的網(wǎng)站中使用HTTPS服務(wù):

通過UseHttps=true和配置好前面所提到的兩個文件,jexus的HTTPS服務(wù)算是搞定了.然后可以通過https://域名進行查看,假如說不能成功,可以在jexus文件夾下的log文件中查看信息,這很關(guān)鍵??!。

在jexus的配置上還需要感謝@無語1994的幫助,剛配置時,用的是自己在服務(wù)器上通過命令生成的證書,不管怎樣,都不能看到到網(wǎng)站頁面,然后通過使用騰訊云上的證書,擺平!

通過兩次配置后我的網(wǎng)站便可使用HTTPS服務(wù)了,也因此,在使用微軟的外部提供程序上登錄微軟第三方頁面也就沒問題了,可以正?;卣{(diào)顯示了。

如想查看,可以訪問https://www.hdshop.xyz:1101/。通過登錄按鈕調(diào)用微軟登錄頁面。

三、個人總結(jié)

在配置方面,走了不少彎路,首先是只是想到在網(wǎng)站中進行配置,但是嘗試起來發(fā)現(xiàn),當我將jexus關(guān)閉后sh /usr/jexus/jws stop,也就是直接將網(wǎng)站面向外網(wǎng),可以進行訪問成功。

  

此時,每個容器中的網(wǎng)站都各自配置了HTTPS服務(wù),但是想到這里便會感覺每個網(wǎng)站都配置的話,有點冗余,那么直接在jexus上配置呢。當然可以,

 

通過在jexus上配置完畢,去掉每個網(wǎng)站上各自配置的HTTPS服務(wù),假如說一個網(wǎng)站不需要使用到諸如OAuth、微信支付等等要求安全性比較高的,那么jexus上配置HTTPS服務(wù)也就足夠了,但是在使用到那些安全性要求后,自身網(wǎng)站也要配置起HTTPS服務(wù)。也就因此,我被困了好多天,最終的效果是:

 

四、留下問題求助

第一個問題便是在之前提到的那張圖中:

jexus和kestrel之間仍然是以什么方式進行傳遞,我看到是利用的tcp,但是舉個例子,用戶訪問的URL是https://xxx.com進入jexus,服務(wù)轉(zhuǎn)交到kestrel,在kestrel中接收的是https://xxx.com還是http://xxx.com,還是說其他的方式。

第二個問題便是在配置過程中,看到微軟提供的HTTP重定向到HTTPS的解決方案,意思是說我通過http訪問后會將http的訪問請求轉(zhuǎn)變成https的訪問請求嗎?也就是說支持http和https的兩種方式,是否?

以上這篇.Net Core和jexus配置HTTPS服務(wù)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論