Tomcat下配置HTTPS的圖文教程
引言
Tomcat核心功能還是作為Java的容器來運(yùn)行Java后端代碼,雖然內(nèi)置了對HTTP請求的支持,但并不是最優(yōu)選擇,通常部署時,會在Tomcat前面加一個專用的Http服務(wù)器,例如Nginx或Apache
一、關(guān)鍵目錄信息
1.logs目錄
(1)catalina.out
Tomcat運(yùn)行過程中的終端輸出,可以看到錯誤信息從而定位問題
當(dāng)Tomcat啟動之后占用了后臺進(jìn)程,其過程中遇到的報錯或請求信息輸出都會在本文件中存儲
我們可以使用 tail -f catalina.out 進(jìn)行實(shí)時查看文件信息變更
(2)localhost_access_log.2024-01-20.txt
該文件是Tomcat中的訪問日志存儲文件,其中存儲的全都是外部訪問的信息。在Linux上 Tomcat 8.0 默認(rèn)是打開的,可以手工關(guān)閉,但不建議關(guān)閉,可用于取證溯源

其中內(nèi)容大致如圖所示,記錄了來訪客戶端的IP地址,以及該客戶端都訪問了那些內(nèi)容
我們可以使用 tail -f localhost_access_log.2024-01-20.txt 來實(shí)時觀測文件信息變更

(3)/opt/apache-tomcat-8.0.53/conf/server.xml
該文件屬于Tomcat的核心配置文件,其中當(dāng)然也包含了日志配置信息
按下shift+G即可到達(dá)文本最后

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
2./opt/apache-tomcat-8.0.53/conf/server.xml
這是Tomcat的核心配置文件
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
這是http服務(wù)開啟的端口配置,8080是http的默認(rèn)端口,8443是https的默認(rèn)端口
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
配置 HTTPS 的基本信息,在互聯(lián)網(wǎng)上,HTTP必須是80,HTTPS必須是443,這樣才不需要再URL地址中加端口號,其他的都需要明確指定
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
這是當(dāng)在Tomcat前另加一個處理HTTP請求的Apache服務(wù)器時所用的配置
其中AJP表示用于將HTTP的請求需要Tomcat容器(Java)處理的部分,交給Java來處理
二、Tomcat配置HTTPS
1.基礎(chǔ)
- HTTP協(xié)議是全程明文,所以非常不安全
- HTTP(應(yīng)用層)+ TCP(傳輸層) 之間加了一層 SSL(TLS),將HTTP協(xié)議進(jìn)行加密再傳輸
- HTTPS的公網(wǎng)上傳輸:公鑰+私鑰進(jìn)行加密,客戶端或瀏覽器可信證書(CA機(jī)構(gòu)頒發(fā))
- 安全和性能不可得兼
- 局域網(wǎng)內(nèi)部配置:(無法取得公網(wǎng)瀏覽器的信任,現(xiàn)實(shí)情況不可用)
(1)HTTP協(xié)議明文傳輸
全過程都是明文,沒有一點(diǎn)秘密可言

(2)HTTPS對稱加密傳輸
一般情況下HTTPS協(xié)議使用的是對稱密鑰加密傳輸,當(dāng)然,這個對稱也不是言語上的對稱

事實(shí)上,客戶端會生成一個隨機(jī)秘鑰,然后利用該隨機(jī)秘鑰對所要傳輸?shù)臄?shù)據(jù)進(jìn)行加密,然后客戶端利用自己的公鑰對隨機(jī)秘鑰進(jìn)行加密,然后client將加密后的隨機(jī)秘鑰和數(shù)據(jù)一起發(fā)送給服務(wù)器,服務(wù)器利用client的證書可以解開隨機(jī)秘鑰,然后再利用隨機(jī)秘鑰解開數(shù)據(jù)信息
(3)HTTPS非對稱加密傳輸

在這里我們將程度比作client,上海比作服務(wù)器,傳輸數(shù)據(jù)比作發(fā)快遞
客戶端對要發(fā)送的數(shù)據(jù)進(jìn)行加密,發(fā)送給服務(wù)器。此時服務(wù)器無法解密,于是服務(wù)器自己也加密一次又發(fā)送給客戶端。此時客戶端對自己的加密解開然后再發(fā)送給服務(wù)器,此時數(shù)據(jù)上就只剩下上海自己的加密了
這只是大致的意思,具體信息還沒學(xué)到…
2.配置
- 進(jìn)入jdk執(zhí)行目錄,如果應(yīng)將jdk環(huán)境變量添加好了就可以不需用這一步
cd /usr/java/jdk/bin
- 輸入指令:
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "/opt/tomcat.keystore"
執(zhí)行之后會出現(xiàn)以下信息,跟著問題做就行了
輸入密鑰庫口令: 再次輸入新口令: 您的名字與姓氏是什么? [Unknown]: ymq 您的組織單位名稱是什么? [Unknown]: youdian 您的組織名稱是什么? [Unknown]: youdian 您所在的城市或區(qū)域名稱是什么? [Unknown]: xian 您所在的省/市/自治區(qū)名稱是什么? [Unknown]: shanxi 該單位的雙字母國家/地區(qū)代碼是什么? [Unknown]: cn CN=ymq, OU=youdian, O=youdian, L=xian, ST=shanxi, C=cn是否正確? [否]: y 輸入 <tomcat> 的密鑰口令 (如果和密鑰庫口令相同, 按回車): 再次輸入新口令: Warning: JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore /opt/tomcat.keystore -destkeystore /opt/tomcat.keystore -deststoretype pkcs12" 遷移到行業(yè)標(biāo)準(zhǔn)格式 PKCS12。

此時我們就可以看到該目錄下多了一個證書文件
但是上述信息給出了warning,我們看看,他說要我們使用這條命令來遷移什么什么,ok

也就是再執(zhí)行一次,然后備份了一下證書文件
- 進(jìn)入 /opt/apache-tomcat-8.0.53/conf/server.xml
取消https配置的注釋,并且在下面添上兩個配置 keystorefile="/opt/tomcat.keystore" keystorePass="p-0p-0p-0" 使得完整信息如下
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystorefile="/opt/tomcat.keystore" keystorePass="p-0p-0p-0" />
由

變?yōu)?/p>

- 重啟Tomcat
/opt/apache-tomcat-8.0.53/bin/shutdown.sh
/opt/apache-tomcat-8.0.53/bin/startup.sh
現(xiàn)在我們?nèi)L試使用https訪問woniusales
好家伙還是訪問不了,想想問題,防火墻開沒開,端口訪問改沒改
firewall-cmd --add-port=8443/tcp --permanent firewall-cmd --add-service=https --permanent systemctl restart firewalld

雖然我們電腦上還是訪問不了(大概率是因為現(xiàn)在瀏覽器都比較高級,非權(quán)威機(jī)構(gòu)發(fā)行的證書是不被瀏覽器允許的),但是Tomcat上配置HTTPS基本流程就是這樣
三、公網(wǎng)
1.公網(wǎng)需要一個固定的IP地址:購買一臺云服務(wù)器,即可獲得一個固定IP
2.建議最好注冊一個域名,然后去通管局備案(否則不允許用域名訪問)
3.將該域名解析到IP地址,即可實(shí)現(xiàn)域名訪問,否則只能使用IP訪問
以上就是Tomcat下配置HTTPS的圖文教程的詳細(xì)內(nèi)容,更多關(guān)于Tomcat配置HTTPS的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Tomcat?的核心腳本catalina.sh?和?startup.sh的關(guān)系及區(qū)別介紹
catalina.sh和startup.sh都是Tomcat的核心腳本,但它們的角色和使用場景有所不同,下面給大家介紹Tomcat的核心腳本catalina.sh和startup.sh的關(guān)系及區(qū)別介紹,感興趣的朋友跟隨小編一起看看吧2025-08-08
servlet和tomcat_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了servlet和tomcat,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
親測有效解決Tomcat啟動提示錯誤:At?least?one?JAR?was?scanned?for?T
這篇文章主要介紹了Tomcat啟動提示錯誤:At?least?one?JAR?was?scanned?for?TLDs?yet?contained?no?TLDs的問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
Tomcat中指定JDK版本的方法實(shí)現(xiàn)
在Tomcat中指定JDK版本可以通過設(shè)置環(huán)境變量或修改啟動腳本來實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
tomcat轉(zhuǎn)東方通的實(shí)現(xiàn)步驟
將Tomcat集成到東方通中間件中,通常是為了實(shí)現(xiàn)更復(fù)雜的業(yè)務(wù)邏輯處理或者為了提高系統(tǒng)在高并發(fā)環(huán)境下的穩(wěn)定性和安全性,本文主要介紹了tomcat轉(zhuǎn)東方通的實(shí)現(xiàn)步驟,感興趣的可以了解一下2025-03-03
深度解析Tomcat 線程池與 JDK 線程池的區(qū)別和聯(lián)系
Tomcat 線程池和 JDK 線程池都是在 Java 開發(fā)中非常有用的工具,用于處理不同類型的并發(fā)任務(wù),本文將深入探討 Tomcat 線程池與JDK 線程池之間的區(qū)別和聯(lián)系,以幫助開發(fā)人員更好地理解它們的工作原理和如何在自己的項目中使用它們2023-11-11

