tomcat8配置https協議訪問
一、背景介紹
由於當前系統網站採用的是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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- WebSphere配置https協議訪問WebHTTP協議
- nginx配置https協議訪問NginxHTTP協議
- svn透過https協議訪問的搭建過程HTTP協議
- nginx 專案配置 https 訪問NginxHTTP
- HTTPS 協議HTTP協議
- Nginx配置VUE專案Https訪問NginxVueHTTP
- 如何用nginx配置https加密訪問?NginxHTTP加密
- HTTPS協議訪問網址為何瀏覽器提示不安全HTTP協議瀏覽器
- 前端使用Nuxt框架,配置本地https訪問前端UX框架HTTP
- 什麼是HTTPS協議?為什麼要用HTTPS協議?HTTP協議
- nginx配置ssl實現https訪問 小白文NginxHTTP
- phpstudy配置本地ssl證照,訪問https://127.0.0.1PHPHTTP127.0.0.1
- https協議的理解HTTP協議
- Http與Https協議HTTP協議
- HTTPS協議詳解HTTP協議
- HTTP和HTTPS協議HTTP協議
- 微信小程式上傳後無法訪問,https證書安裝後訪問“使用了不受支援的協議”微信小程式HTTP協議
- HTTP協議和HTTPS協議的異同點?HTTP協議
- Kubernetes叢集中配置Ingress支援HTTPS訪問(一):cfsslHTTP
- Tomcat全域性/區域性https訪問配置方法TomcatHTTP
- 如何使用自籤CA配置HTTPS加密反向代理訪問?HTTP加密
- Harbor設定https訪問HTTP
- http 升級為 https 訪問HTTP
- 大型網站的HTTPS實踐(一)——HTTPS協議和原理網站HTTP協議
- Go語言實現HTTPS加密協議GoHTTP加密協議
- HTTPS的SSL協議速度慢嗎❓HTTP協議
- HTTPS協議的優缺點有哪些?HTTP協議
- 配置Ingress支援HTTPS訪問(二):使用cert-manager申請證書HTTP
- 使用docker搭建最新版本的gitea,並配置HTTPS訪問DockerGitHTTP
- Swift iOS : 訪問 https 伺服器SwiftiOSHTTP伺服器
- IIS7/IIS8環境下全站https訪問的配置方法HTTP
- HTTP 協議知識點總結(二)HTTPSHTTP協議
- 計算機網路之十三:HTTPS協議計算機網路HTTP協議
- mac+charles抓國外的https協議MacHTTP協議
- ios網路協議從http變成httpsiOS協議HTTP
- 真正“搞”懂HTTPS協議17之TLS握手HTTP協議TLS
- IS-IS協議原理與配置協議
- WebSocket協議 8 問Web協議