.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