.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的命令窗 ...
随机推荐
- Career Planning:Developers Best Practices Tutorial
This small tutorial is based on my past 16+ years of experience in software development industry. I ...
- python multi process multi thread
muti thread: python threading: https://docs.python.org/2/library/threading.html#thread-objects https ...
- phpcms使用session的方法
phpcms使用session //session开始 必须有下面的代码,否则无效 private function _session_start() { $session_storage = 'se ...
- 编译原理课后习题答案令A,B和C是任意正规式,证明以下关系成立(A|B)*=(A*B*)*=(A*|B*)*
题目: 令A.B和C是任意正规式,证明以下关系成立: A∣A=A (A*)*= A* A*=ε∣A A* (AB)*A=A(BA)* (A∣B)*=(A*B ...
- JSP页面退出时清除会话Session
我们用一个quit.jsp来处理用户退出系统的操作,quit.jsp负责注销session,及时释放资源. 注销session. 关闭浏览器窗口. 其代码如下所示: <%@ page conte ...
- [设计模式]访问者 Visitor 模式
访问者模式是对象的行为模式. 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变.
- Kotlin学习记录3
参考我的博客:http://www.isedwardtang.com/2017/09/04/kotlin-primer-3/
- C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)
转自:http://www.kuqin.com/language/20090806/66164.html 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.可见预处理过程先于编译器 ...
- 如何判断某String是否经过urlEncoder.encode过
import java.util.BitSet; public class UrlEncoderUtils { private static BitSet dontNeedEncoding; stat ...
- systemverilog interface杂记
随着IC设计复杂度的提高,模块间互联变得复杂,SV引入接口,代表一捆连线的结构. Systemverilog语法标准,新引入一个重要的数据类型:interface. interface主要作用有两个: ...