Tomcat下配置HTTPS的圖文教程
引言
Tomcat核心功能還是作為Java的容器來運(yùn)行Java后端代碼,雖然內(nèi)置了對(duì)HTTP請(qǐng)求的支持,但并不是最優(yōu)選擇,通常部署時(shí),會(huì)在Tomcat前面加一個(gè)專用的Http服務(wù)器,例如Nginx或Apache
一、關(guān)鍵目錄信息
1.logs目錄
(1)catalina.out
Tomcat運(yùn)行過程中的終端輸出,可以看到錯(cuò)誤信息從而定位問題
當(dāng)Tomcat啟動(dòng)之后占用了后臺(tái)進(jìn)程,其過程中遇到的報(bào)錯(cuò)或請(qǐng)求信息輸出都會(huì)在本文件中存儲(chǔ)
我們可以使用 tail -f catalina.out
進(jìn)行實(shí)時(shí)查看文件信息變更
(2)localhost_access_log.2024-01-20.txt
該文件是Tomcat中的訪問日志存儲(chǔ)文件,其中存儲(chǔ)的全都是外部訪問的信息。在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í)時(shí)觀測(cè)文件信息變更
(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地址中加端口號(hào),其他的都需要明確指定
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
這是當(dāng)在Tomcat前另加一個(gè)處理HTTP請(qǐng)求的Apache服務(wù)器時(shí)所用的配置
其中AJP表示用于將HTTP的請(qǐng)求需要Tomcat容器(Java)處理的部分,交給Java來處理
二、Tomcat配置HTTPS
1.基礎(chǔ)
- HTTP協(xié)議是全程明文,所以非常不安全
- HTTP(應(yīng)用層)+ TCP(傳輸層) 之間加了一層 SSL(TLS),將HTTP協(xié)議進(jìn)行加密再傳輸
- HTTPS的公網(wǎng)上傳輸:公鑰+私鑰進(jìn)行加密,客戶端或?yàn)g覽器可信證書(CA機(jī)構(gòu)頒發(fā))
- 安全和性能不可得兼
- 局域網(wǎng)內(nèi)部配置:(無法取得公網(wǎng)瀏覽器的信任,現(xiàn)實(shí)情況不可用)
(1)HTTP協(xié)議明文傳輸
全過程都是明文,沒有一點(diǎn)秘密可言
(2)HTTPS對(duì)稱加密傳輸
一般情況下HTTPS協(xié)議使用的是對(duì)稱密鑰加密傳輸,當(dāng)然,這個(gè)對(duì)稱也不是言語(yǔ)上的對(duì)稱
事實(shí)上,客戶端會(huì)生成一個(gè)隨機(jī)秘鑰,然后利用該隨機(jī)秘鑰對(duì)所要傳輸?shù)臄?shù)據(jù)進(jìn)行加密,然后客戶端利用自己的公鑰對(duì)隨機(jī)秘鑰進(jìn)行加密,然后client將加密后的隨機(jī)秘鑰和數(shù)據(jù)一起發(fā)送給服務(wù)器,服務(wù)器利用client的證書可以解開隨機(jī)秘鑰,然后再利用隨機(jī)秘鑰解開數(shù)據(jù)信息
(3)HTTPS非對(duì)稱加密傳輸
在這里我們將程度比作client,上海比作服務(wù)器,傳輸數(shù)據(jù)比作發(fā)快遞
客戶端對(duì)要發(fā)送的數(shù)據(jù)進(jìn)行加密,發(fā)送給服務(wù)器。此時(shí)服務(wù)器無法解密,于是服務(wù)器自己也加密一次又發(fā)送給客戶端。此時(shí)客戶端對(duì)自己的加密解開然后再發(fā)送給服務(wù)器,此時(shí)數(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í)行之后會(huì)出現(xiàn)以下信息,跟著問題做就行了
輸入密鑰庫(kù)口令: 再次輸入新口令: 您的名字與姓氏是什么? [Unknown]: ymq 您的組織單位名稱是什么? [Unknown]: youdian 您的組織名稱是什么? [Unknown]: youdian 您所在的城市或區(qū)域名稱是什么? [Unknown]: xian 您所在的省/市/自治區(qū)名稱是什么? [Unknown]: shanxi 該單位的雙字母國(guó)家/地區(qū)代碼是什么? [Unknown]: cn CN=ymq, OU=youdian, O=youdian, L=xian, ST=shanxi, C=cn是否正確? [否]: y 輸入 <tomcat> 的密鑰口令 (如果和密鑰庫(kù)口令相同, 按回車): 再次輸入新口令: Warning: JKS 密鑰庫(kù)使用專用格式。建議使用 "keytool -importkeystore -srckeystore /opt/tomcat.keystore -destkeystore /opt/tomcat.keystore -deststoretype pkcs12" 遷移到行業(yè)標(biāo)準(zhǔn)格式 PKCS12。
此時(shí)我們就可以看到該目錄下多了一個(gè)證書文件
但是上述信息給出了warning,我們看看,他說要我們使用這條命令來遷移什么什么,ok
也就是再執(zhí)行一次,然后備份了一下證書文件
- 進(jìn)入 /opt/apache-tomcat-8.0.53/conf/server.xml
取消https配置的注釋,并且在下面添上兩個(gè)配置 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
雖然我們電腦上還是訪問不了(大概率是因?yàn)楝F(xiàn)在瀏覽器都比較高級(jí),非權(quán)威機(jī)構(gòu)發(fā)行的證書是不被瀏覽器允許的),但是Tomcat上配置HTTPS基本流程就是這樣
三、公網(wǎng)
1.公網(wǎng)需要一個(gè)固定的IP地址:購(gòu)買一臺(tái)云服務(wù)器,即可獲得一個(gè)固定IP
2.建議最好注冊(cè)一個(gè)域名,然后去通管局備案(否則不允許用域名訪問)
3.將該域名解析到IP地址,即可實(shí)現(xiàn)域名訪問,否則只能使用IP訪問
以上就是Tomcat下配置HTTPS的圖文教程的詳細(xì)內(nèi)容,更多關(guān)于Tomcat配置HTTPS的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Apache?Tomcat服務(wù)部署網(wǎng)站的項(xiàng)目實(shí)踐
本文主要介紹了Apache?Tomcat服務(wù)部署網(wǎng)站的項(xiàng)目實(shí)踐,包括下載和安裝Tomcat,設(shè)置環(huán)境變量,配置server.xml文件,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08詳解在Tomcat7.0中設(shè)置默認(rèn)服務(wù)器和不加端口名訪問
本篇文章主要介紹了在Tomcat7.0中設(shè)置默認(rèn)服務(wù)器和不加端口名訪問,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Tomcat中GET和POST請(qǐng)求時(shí)亂碼問題及解決
這篇文章主要介紹了Tomcat中GET和POST請(qǐng)求時(shí)亂碼問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06CentOS設(shè)置IP連接網(wǎng)絡(luò)實(shí)現(xiàn)過程圖解
這篇文章主要介紹了CentOS設(shè)置IP連接網(wǎng)絡(luò)實(shí)現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09tomcat啟動(dòng)提示Couldn‘t get host name問題
這篇文章主要介紹了tomcat啟動(dòng)提示Couldn‘t get host name問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06解決tomcat部署下的web項(xiàng)目網(wǎng)頁(yè)更改不能自動(dòng)刷新的問題
下面小編就為大家?guī)硪黄鉀Qtomcat部署下的web項(xiàng)目網(wǎng)頁(yè)更改不能自動(dòng)刷新的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06Tomcat架構(gòu)設(shè)計(jì)及Servlet作用規(guī)范講解
這篇文章主要為大家介紹了Tomcat架構(gòu)設(shè)計(jì)及Servlet作用規(guī)范講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08