.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的命令窗 ...
随机推荐
- php 汉字验证码
代码: captcha.php <?php //实现简单的验证码 //session_start session_start(); //画布 $image = imagecreatetrueco ...
- jquery slibings选取同级其他元素
jquery选取同级其他元素可以使用slibings方法,end方法可以清除之前的链式操作,相当于重新开始. <script type="text/javascript"&g ...
- 微信公众号 openId 支付 php中file_get_contents与curl性能比较分析
w http://www.jb51.net/article/57238.htm
- Java 之网络编程
网络模型 OSI 模型, 把网络通信的工作分为七层. TCP/IP 模型, 把网络通信的工作分为四层 应用层 传输层 网际层 主机至网络层 网络通信要素 (java.net 包) - IP 地址 (I ...
- java 日期的格式化 输入/输出
想要得到形如2018.07.09的格式化好的当天日期 创建Date对象,调用SimpleDateFormat对象的format方法: indexstr="logstash-"+ne ...
- UML图箭头关系
ML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进 ...
- Django继承
Django目前支持两种不同的继承方式,包括抽象基础类和多表继承. 1.抽象基础类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 cla ...
- 批量处理任务进度条控制—基于BackgroundWorker
今天要做一个批量处理图层数据的功能,希望在处理任务过程中,各个任务都能在进度条中显示自己的当前进度,决定继续使用强大易用的BackgroundWorker组件.通过在RunWorkerComplete ...
- webpack基础使用
环境: win10, webpack v3.5.6, node v8.4, npm v5.3. 安装与配置 新建一个项目目录demo, 在当前目录执行如下命令: npm init -y npm ins ...
- 超过两行显示省略号 -webkit-line-clamp、-webkit-box-orient vue打包后不起作用
为了实现两行显示缩略显示,但是本地是可以显示,打包后不起作用 word-break: break-all; text-overflow: ellipsis; display: -webkit-box; ...