tomcat8配置https協議訪問

jaymarco發表於2020-10-16

一、背景介紹

    由於當前系統網站採用的是http協議訪問,這種協議 通訊使用明文、請求和響應不會對通訊方進行確認、無法保護資料的完整性,很容易被攻擊者 篡改網站,為了 防止網站被黑被篡改,因此需要對當前http協議改造成https協議,保障網站的安全和客戶利益不受損。

二、改造方案

三、 生成https證書

3.1 服務端生成證書

使用keytool工具為Tomcat生成證書,keystore檔案想要存放在“/opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore”,口令“123456”。

keytool -genkey -v -alias jaytom -keyalg RSA -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore   -validity 36500

keytool -importkeystore -srckeystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore   -destkeystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore -deststoretype pkcs12

引數說明:

-keystore:生成證書:/opt/apache-tomcat-8.5.46/keystore/為證書路徑,證書檔名:jaytom.keystore

-validity 36500:表示證書有效期100年

-alias:證書名稱:"jaytom"

3.2 客戶端生成證書

為客戶端瀏覽器生成證書,便於伺服器來驗證它。為了能將證書順利匯入至瀏覽器,證書格式應該是PKCS12。

keytool -genkey -v -alias jayclient -keyalg RSA -storetype PKCS12 -keystore   /opt/apache-tomcat-8.5.46/tlskey/jayclient.p12 -validity 36500

引數說明:

-keystore:生成證書:/opt/apache-tomcat-8.5.46/tlskey/為證書路徑,證書檔名:jayclient.p12

-alias:證書名稱:"jayclient "

3.3  配置服務端信任客戶端證書

由於是雙向SSL認證,伺服器必須要建立信任客戶端證書,因此,必須把客戶端證書新增為伺服器的信任認證。由於不能直接將PKCS12格式的證書庫匯入,必須先把客戶端證書匯出為一個單獨的CER檔案。

keytool -export -alias jayclient -keystore /opt/apache-tomcat-8.5.46/tlskey/jayclient.p12 -storetype PKCS12 -storepass 123456 -rfc -file /opt/apache-tomcat-8.5.46/tlskey/clientforserver.cer

接下來將該檔案匯入到伺服器的證書庫,新增為一個信任證書使用命令如下:

keytool -import -v -file /opt/apache-tomcat-8.5.46/tlskey/clientforserver.cer -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore

透過list命令檢視伺服器的證書庫,可以看到兩個證書,一個是伺服器證書,一個是受信任的客戶端證書:

keytool -list -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore

3.4  配置客戶端信任服務端證書

客戶端也要驗證伺服器證書,因此,必須把伺服器證書新增到瀏覽的“受信任的根證書頒發機構”。由於不能直接將keystore格式的證書庫匯入,必須先把伺服器證書匯出為一個單獨的CER檔案。

keytool -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore -export -alias jaytom   -file /opt/apache-tomcat-8.5.46/tlskey/CA.cer

透過以上命令,已將伺服器證書匯出到“CA.cer”檔案了。將此檔案提供給客戶端雙擊client_key.cer檔案,按照提示安裝證書,將證書填入 到“受信任的根證書頒發機構”。

如下是生成的證書,請將CA.cer,jayclient.p12從伺服器端下載到本地

四、tomcat配置https

開啟tomcat配置檔案,如:/opt/apache-tomcat-8.5.46/conf/server.xml,如下兩個地方配置檔案

<Connector port="8080" protocol="HTTP/1.1"

              connectionTimeout="20000"
              redirectPort="8443" />
 修改為如下配置
 <Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="= 443" />  
去掉註釋 <!--<!Connector port="8443"   ...?</Connector>  -->
修改為如下配置 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"            
 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"  clientAuth="true" sslProtocol="TLS"
 keystoreFile="/opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore" keystorePass="123456"
 truststoreFile="/opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore" truststorePass="123456">

</Connector>
去掉註釋<!-- <Connector port="8009" />-->
修改為如下配置
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort= "443" />    

修改後的配置截圖如下

五、重啟tomcat服務

 ./catalina.sh start

六 功能驗證

匯入證書到瀏覽器

將證書client_key.cer從linux伺服器端下載到本地機器

匯入證書

雙擊證書“jayclient.p12” 安裝

輸入證書密碼“123456”,然後下一步,最後完成。


雙擊證書“CA.cer”證書,然後點選安裝證書


以上證書已經安裝完成。

在windows上面配置域名地址

C:\Windows\System32\drivers\etc

驗證https地址:

七、https改造總結

   透過HTTP改造成HTTPS使網站系統資訊傳輸變得更加安全,但同時也會讓系統會帶來巨大的效能損耗,使得使用者體驗變得比較差,這也是一直制約著 HTTPS 普及的重要原因之一。為確保網站系統的安全性,犧牲一點服務資源效能也是值得的。後續還可以單獨從HTTPS連線數上去做限流控制,可以減輕高併發對伺服器壓力


有需要的朋友可以關注我的公眾號,文章每日一更


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2727484/,如需轉載,請註明出處,否則將追究法律責任。

相關文章