.Net Core使用jexus配置https
今天搞了一下怎么从http换成https,写一篇博客记录该过程。关于jexus的安装和使用请看我之前的一篇博客《Jexus部署Asp.Net Core项目》,唯一的不同是,将jexus升级成了5.8.3的专业版。我觉得在这里还是有必要再说一下jexus这个东东。
什么是Jexus?
Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,以支持ASP.NET、ASP.NET CORE、PHP为特色,同时具备反向代理、入侵检测等重要功能。可以这样说,Jexus是.NET、.NET CORE跨平台的最优秀的宿主服务器,如果我们认为它是Linux平台的IIS,这并不为过,因为,Jexus不但非常快,而且拥有IIS和其它Web服务器所不具备的高度的安全性,这是政府机构和重要企业对web服务器最必要也是最重要的品质需求。
关于Jexus独立版和通用版
Jexus“独立版”指的是自带.net运行时(mono),不需要在客户服务器安装mono就能正常运行的Jexus版本,该版本只支持 64位Linux操作系统。
Jexus通用版(不推荐)不带 .NET运行时,因此,使用者应该首先在客户机安装mono和libgdiplus。
Jexus操作命令:
操作Jexus需在Jexus的安装目录下操作,切换至目录(如:cd /tmp/jexus)
启动:sudo ./jws start
停止:sudo ./jws stop
重启:sudo ./jws restart
基础知识介绍完后,下面开始进入正题:
1、运行环境
系统信息:CentOS Linux release 7.4.1708(Core)
Jexus版本:Jexus V5.8.3x64 专业版(独立版)
2、安装并部署
安装Jexus并将.net core项目部署到CentOS中,使其能够通过域名正常访问,关于部署请查看上面提到的一篇博客,不做多余赘述。
3、申请SSL证书
我用的是腾讯云的服务器,可以自行进行申请,具体申请步骤可查看官方链接:
https://cloud.tencent.com/document/product/400/6814
另外,如果大家是在腾讯云购买的域名的话,会自动生成一个免费的SSL证书,这个也是可以正常使用的,当申请完证书后,可以发现,申请的证书中包含了Apache 2.x,Nginx证书,IIS证书,Tomcat证书,并不包含Jexus证书,那如果想使用Jexus部署的话,可以直接采用Nginx的证书即可。关于这几种证书的安装,可直接参考腾讯云官方文档:
https://cloud.tencent.com/document/product/400/4143
下载的证书文件如下:
为什么Https会比Http要安全,实际上就是因为多了一层SSL/TLS,SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。而TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。所以可以看到,在官方的文档中,SSL协议要按如下配置:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
4、配置SSL证书
Jexus有两种配置方式,一种是全服务器的配置,当然这要求你申请的证书是针对你在该服务器上所有域名的全局证书,在Jexus安装目录下修改jws.conf文件,分别修改CertificateFile 和CertificateKeyFile的证书的绝对路径,如图所示:
另一种配置就是比较常规的配置方式,适用于证书只针对某一个域名的情况,分别修改每个站点的配置文件,在Jexus安装目录中siteconf文件夹下,此文件用来放置你所有站点的配置,默认为default配置文件,可自行修改名称,要是有多个站点配置,可直接拷贝该文件。修改以下参数:
http使用的80端口,https使用的是443端口,注意在使用腾讯云的时候,要将你使用的端口在安全组里面添加入站规则,无需多说。注意这几个参数的配置:UseHttps=true,ssl.certificate=crt的绝对路径,ssl.certificatekey=key文件的绝对路径,ssl.protocol=默认的是TLSV1.1,ssl.ciphers配置的套件按照腾讯云的文档配置。
以上为如何配置证书,由于jexus https需要libssl函数库的支持,下一步登记SSL库
5、登记SSL库
首先查看在/lib或/usr/lib等系统文件库下是否有SSL库文件的名字,该文件名应该是“libssl.so.版本号”,使用命令:
find / -name libssl.so.*
若出现以下类似信息:
若没有出现以上信息,则说明未安装OpenSSL,就先请安装OpenSSL ,OpenSSL是一个安全套接字层密码库,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。关于如何安装OpenSSL,请大家自行查找相关文档。那么如何确定的SSL库文件名,使用命令:
ls -l /usr/lib64/ |grep libssl
查看信息如下:
由此可以判定,我们所需要的文件为 libssl.so.1.0.2k 。找到该文件后,有两种配置方式,通用版的配置方式是修改配置文件,独立版的配置方式是可以直接进行软链接,下面我们首先查看是否有无链接成功,使用命令:
ls -l /root/jexus/runtime/lib
如上图所示,则表示没有链接,可使用命令进行软连接,命令如下:
sudo ln -s //usr/lib64/libssl.so.1.0.2k /root/jexus/runtime/lib/libssl.so
执行完成后,再运行查看链接命令如下图所示,表示已存在链接:
这就表明libssl已经链接到 /root/jexus/runtime/lib文件夹下了,此时我们启动我们的项目 ./jws start ,使用https访问就可以正常访问了。
另一种方式就是修改配置文件,文件路径在/jexus/runtime/etc/mono下的config文件,打开该文件在configuration节点下添加以下节点配置:
<dllmap dll="libssl" target="/usr/lib64/libssl.so.1.0.2k" os="!windows" />
dll必须为libssl,target必须为你系统种用到的文件路径。再启动我们的网站也就可以正常访问了。
关于Jexus的其他的详细配置,可自行去官方文档进行查看。https://www.linuxdot.net/bbsfile-3084
扫描二维码关注我的公众号,共同学习,共同进步!
.Net Core使用jexus配置https的更多相关文章
- .Net Core和jexus配置HTTPS服务
花了几天时间,看了好多篇博客,终于搞定了网站的HTTPS服务,借此写篇博客,来让有需要的朋友少走弯路. 一.环境介绍 1.Linux下在Docker容器中部署好了一个网站,该网站需要通过外部提供程序访 ...
- 解决ASP.NET Core通过docker-compose up启动应用无法配置https的解决办法
错误重现一下: 新建了一个ASP.NET Core应用,在VS2017下添加Docker支持,选择Linux环境 然后再给这个web应用再右键添加容器业务流程协调程序支持,然后解决方案就多了一个doc ...
- linux系统下使用nginx反向代理asp.net core,并配置免费的https证书
反向代理是为动态 Web 应用提供服务的常见设置. 反向代理终止 HTTP 请求,并将其转发到 ASP.NET Core 应用. 1.在asp.net core项目中的Startup的Configur ...
- ASP.NET Core Docker jexus nginx部署-CentOS实践版
本文用图文的方式记录了我自己搭建centos+asp.net core + docker + jexus + nginx的整个过程,希望对有同样需求的朋友有一定的参考作用. 本文主要内容如下: cen ...
- CentOS ASP.NET Core Runtime Jexus跨平台布署
.net core 开源和跨平台,能布署到当前主流的Windows,Linux,macOS 系统上.本篇我们将在 Linux 系统上使用 ASP.NET Core Runtime 和 Jexus 布署 ...
- 腾讯云-ASP.NET Core+Mysql+Jexus+CDN上云实践
腾讯云-ASP.NET Core+Mysql+Jexus+CDN上云实践.md 开通腾讯云服务器和Mysql 知识点: ASP.NET Core和 Entity Framework Core的使用 L ...
- ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- ASP.NET Core 1.0 部署 HTTPS
ASP.NET Core 1.0 部署 HTTPS ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1) 提示 更新时间:2016年01月23日. 在目前介 ...
- tomcat配置https协议
tomcat配置https协议 1.找到本地jdk底下的bin目录,bin目录底下存在文件keytool.exe(在bin目录下空白处,按住shift右击,打开命令窗口,如下图) 2.在cmd的命令窗 ...
随机推荐
- Java 之反射机制
java 语言的反射机制 - 在运行状态中,对于任意一个类 (class 文件),都能够知道这个类的所有属性和方法; - 能动态获取类中的信息,也可以理解为对类(字节码文件)的解剖 描述字节码文件的类 ...
- python基础之练习题(一)
1.执行 Python 脚本的两种方式 python test.py chmod +x test.py && ./test.py 2.简述位.字节的关系 二进制位(bit)是计算机存储 ...
- If 条件控制 & while循环语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 语句 Python中if语句的一般形式如下所示: i ...
- mysql中变量的定义
mysql中的变量定义 mysql的变量分为系统变量和用户变量,mysql系统定义的变量是系统变量,用户自己定义的变量为用户变量.对于系统变量,用户只能够改变它的值不能够创建新的系统变量.对于用户变量 ...
- Hadoop十年解读与发展预测
编者按:Hadoop于2006年1月28日诞生,至今已有10年,它改变了企业对数据的存储.处理和分析的过程,加速了大数据的发展,形成了自己的极其火爆的技术生态圈,并受到非常广泛的应用.在2016年Ha ...
- Read Large Files in Python
I have a large file ( ~4G) to process in Python. I wonder whether it is OK to "read" such ...
- 微信小程序将带来web程序员的春天!
微信之父张小龙在年初那次演讲中曾表示:“我自己是很多年的程序员,我觉得我们应该为开发的团体做一些事情.”几个月后,微信正式推出微信应用号(即微信小程序)在互联网中掀起又一波热潮. 过去,对于很多开发者 ...
- canvas笔记1
w3c定义: <canvas> 标签定义图形,比如图表和其他图像. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形. canvas 对象 属性: width he ...
- Android LCD
Android LCD(一):LCD基本原理篇Android LCD(二):LCD常用接口原理篇Android LCD(三):Samsung LCD接口篇Android LCD(四):LCD驱动调试篇
- 使用C语言扩展Python提供性能
python底层是用c写的,c本身是一个非常底层的语言,所以它做某些事情的效率肯定会比上层语言高一些. 比如有些自动化测试用的python库,会对系统的UI进行一些捕获,点击之类的操作,这必然要用到c ...