宝哥软件园

Net Core和jexus配置HTTPS服务方法

编辑:宝哥软件园 来源:互联网 时间:2021-09-01

花了几天时间看了很多博客,终于得到了网站的HTTPS服务,这样写博客,让有需要的朋友少走弯路。

一、环境介绍

1.在Linux下的Docker容器中已经部署了一个网站。网站需要通过外部提供商接入微软的登录平台,使用OAuth2.0协议,因此需要使用SSL服务,同时也需要网站加入HTTPS服务。

2.在容器外部,主机通过jexus执行端口转发。(本来没打算用jexus,但是看到情况不对,还是要拉进来)

3.HTTPS服务需要证书。您可以在一天内在腾讯云上申请https://console.cloud.tencent.com/ssl免费证书。注意了!假设我们和我一样使用jexus,但是腾讯云提供的证书下载包中没有jexus,只有IIS、Nginx、Apache等。

我们可以直接使用Nginx的两个文件。第一个是crt文件,第二个是密钥文件。

如果需要pfx结尾的文件,可以通过命令:合成这两个文件生成pfx文件

OpenSSL pkcs12-export-outserver . pfx-inkyserver . key-in server . CRT可以将文件名更改为您的文件名。或者度娘上有一个网站,把内容贴进去,然后自动生成。如果不敲命令,就不再提供网站。

二、全配置

首先,我想说的是,我在jexus中配置了HTTPS服务,在Docker容器中运行的网站中也配置了HTTPS服务。就像这张照片:

有些人可能会想,我们为什么要配置一切呢?只配置jexus就够了。当然,配置jexus就够了,但是如果我需要在我的网站中调用OAuth2.0协议支持的网站,总是会使用HTTP协议来返回地址,这在开发环境中是没有问题的,但是一旦访问了域名或者IP地址,就会生成HTTP协议。

在这里。我已经配置了微软的外部提供商,当我单击按钮时,我将跳转到微软登录页面:

跳转后,当前登录页面的url表示有些参数是我们想要的,比如redirect_url。此时,我已经在网站上配置了HTTPS协议。当不匹配时,那里的redirect_url总是HTTP。

好的,开始配置HTTPS服务:

1.在中配置HTTPS协议。净核心

首先,可能有必要澄清一下jexus和网站之间的请求转发,这也是我想澄清的一个问题。jexus端口转发请求时是HTTPS协议,还是只是请求转发,在网站变成HTTP?就像这个模型,jexus转发后,进入红隼后是HTTP协议还是HTTPS协议?我希望你能帮助我,但是我找不到任何参考资料。

我能做的是,当我在红隼尝试不配置HTTPS协议时,可以成功访问网站,但是当我通过微软的第三方登录成功后回拨地址访问网站时,会是使用的HTTP协议,会造成问题。与OAuth要求SSL服务必须使用HTTPS协议相矛盾,这促使我在红隼配置HTTPS协议。具体配置如下:

将上面合成的pfx文件添加到Program.cs文件中。在这种情况下,要求我的每个容器中运行的网站都需要使用证书。同时,请注意。UseUrls('HTTPS:'//:443 ')不能用于在此设置HTTPS服务。如果。UseKestrel()未配置,您将得到一个错误。请注意!

使用系统;使用系统。集合。通用;使用系统。IO;使用系统。Linq使用系统。线程化。任务;使用微软。AspNetCore使用微软。托管;使用微软。扩展。配置;使用微软。扩展。日志记录;使用微软。服务器.红隼.核心;使用系统。安全性。密码学。X509证书;使用System.Net;使用身份。Api . Web.Core命名空间标识。API { public class Program { public static void Main(string[]args){ BuildWebHost(args))。run();}公共静态IWebHost BuildWebHost(字符串[] args)=WebHost。CreateDefaultBuilder(args) //。UseJexusIntegration()。使用kestrel(options={ options . listen(IP地址. any,1101,listen options={ var certificate=new x509 certificate 2(' hdshoppeserver . pfx ','您的证书密码'));列表选项。UseHttps(证书);});}) .UseStartupStartup()。build();}}2.在jexus上配置HTTPS协议(如果不使用jexus或不使用jexus,您可以跳过此处)

首先,通过命令,我发现我的jexus版本是5.8.3,支持HTTPS。

转到您的jexus配置文件夹,我将以图形方式表达一个更直接的视图:

jexus的具体文件功能就不再介绍了,这里只介绍配置证书服务。你需要查看基于Jexus-5.6.3的详细解释。

我们可以将整个服务器上的所有网站配置为使用jws.conf中的HTTPS服务:

您也可以在siteconf中需要的单独网站上配置HTTPS服务:

通过使用UseHttps=true并配置上面提到的两个文件,可以认为jexus的Https服务已经完成。那你可以通过域名https://查一下。如果不成功,可以查看jexus文件夹下的日志文件中的信息,这非常重要!

在jexus的配置中,我们还需要感谢@ Silent 1994的帮助。当我们第一次配置它时,我们在服务器上使用我们自己的命令生成的证书。无论如何,我们看不到网站页面,然后可以用腾讯云上的证书来结算!

经过两次配置,我的网站可以使用HTTPS服务。所以在微软外部提供者上登录微软第三方页面是没有问题的,可以通过正常回调显示。

要查看,您可以访问https://www.hdshop.xyz33601101/。通过登录按钮调用微软登录页面。

三、个人总结

在配置方面,我走了很多弯路。第一,刚想到在网站中配置,但是尝试的时候发现sh /usr/jexus/jws停止,也就是网站直接面向外网,访问成功。

这个时候每个容器中的网站都配置了HTTPS服务,但是仔细想想就会觉得每个网站都配置了,有点多余,直接在jexus上配置吧。当然,

配置jexus后,删除每个网站上配置的HTTPS服务。如果一个网站不需要使用OAuth、微信支付等高安全要求,在jexus上配置HTTPS服务就够了,但是使用了那些安全要求之后,自己的网站也要配置HTTPS服务。所以,我被困了很多天,最后的效果是:

第四,留下问题寻求帮助

第一个问题在前面提到的图片中:

杰克斯和红隼还是通过什么方式传播的?我看到使用了tcp,但是比如用户访问的URL是https://xxx.com进入jexus,服务被转移到红隼,https://xxx.com或者http://xxx.com被红隼接收,或者其他方式。

第二个问题是,在配置过程中,我看到了微软提供的解决方案,将http重定向到了httpS。是不是说我通过HTTP访问后会把HTTP访问请求变成https访问请求?也就是说支持http和https,对吧?

以上配置HTTPS服务的方法由。Net Core和jexus是边肖分享的全部内容,希望能给大家一个参考和支持。

更多资讯
游戏推荐
更多+