Mac下配置tomcat支持https

前言

? ? ? ? 講 HTTPS 之前,我們先來回顧一下 HTTP 協(xié)議。HTTP 是一種超文本傳輸協(xié)議,它是無狀態(tài)的、簡單快速的、基于 TCP 的可靠傳輸協(xié)議。

? ? ? ? 既然 HTTP 協(xié)議這么好,那怎么有冒出來了一個 HTTPS 呢?主要是因為 HTTP 是明文傳輸?shù)?,這就造成了很大的安全隱患。在網(wǎng)絡(luò)傳輸過程中,只要數(shù)據(jù)包被人劫持,那你就相當(dāng)于赤身全裸的暴露在他人面前,毫無半點隱私可言。想象一下,如果你連了一個不可信的 WIFI,正好有使用了某個支付軟件進行了支付操作,那么你的密碼可能就到別人手里去了,后果可想而知。所以就誕生了 HTTPS 協(xié)議。

? ? ? ? HTTPS 并非是應(yīng)用層的一種新協(xié)議。只是 HTTP 通信接口部分用 SSL (安全套接字層)和TLS (安全傳輸層協(xié)議)代替而已。即添加了加密及認(rèn)證機制的 HTTP 稱為 HTTPS ( HTTP Secure )。

? ? ? ? HTTPS = HTTP + 加密 + 認(rèn)證 + 完整性保護

步驟

一:證書配置

1、生成服務(wù)端證書

打開mac上的終端,使用keytool為Tomcat生成證書


生成服務(wù)端證書

這個指令的意思是:在/Users/用戶名/資源庫/Apache/CA/目錄下創(chuàng)建tomcat.keystore文件,加密方式為 RSA,有效時間是36500天(100年)

上述指令回車后會提示輸入密碼及其他一系列認(rèn)證信息,如下圖:

信息認(rèn)證

注:在命令行填寫必要參數(shù): A、 輸入keystore密碼----此處需要輸入大于6個字符的字符串。B、您的名字與姓氏是什么?----這個必須是tomcat部署主機的域名或者IP,否則瀏覽器會彈出警告窗口,提示用戶證書與所在域不匹配。在本地做開發(fā)測試時,應(yīng)填入“l(fā)ocalhost

2、生成客戶端證書

為瀏覽器生成證書,以便讓服務(wù)器來驗證它。為了能將證書順利導(dǎo)入至IE和Firefox,證書格式應(yīng)該是PKCS12,命令如下:


生成客戶端證書

注:myKey.p12是自定義名稱,可任意命名。 /Users/.../CA/mykey.p12為證書路徑,路徑可自定義。雙擊mykey.p12文件,即可將證書導(dǎo)入至瀏覽器(客戶端)。

3、服務(wù)端信任客戶端證書

由于是雙向SSL認(rèn)證,服務(wù)器必須要信任客戶端證書,因此,必須把客戶端證書添加為服務(wù)器的信任認(rèn)證。由于不能直接將PKCS12格式的證書庫導(dǎo)入,必須先把客戶端證書導(dǎo)出為一個單獨的CER文件,使用如下命令:

localhost:~ xry$ keytool -export -alias myKey -keystore /Users/xry/Library/Apache/CA/myKey.p12 -storetype PKCS12 -storepass 123456 -rfc -file /Users/xry/Library/Apache/CA/myKey.cer

注:(其中mykey為自定義與客戶端定義的mykey要一致,@“123456”是你設(shè)置的密碼,此處填你設(shè)置的密碼)。

通過以上命令,客戶端證書就被我們導(dǎo)出到“/Users/用戶名/工作/CA/mykey.cer”文件中了。 下一步,是將該文件導(dǎo)入到服務(wù)器的證書庫,添加為一個信任證書使用命令如下:

keytool -import -v -file /Users/用戶名/工作/CA/mykey.cer -keystore /Users/用戶名/工作/CA/tomcat.keystore

通過list命令查看服務(wù)器的證書庫,可以看到兩個證書,一個是服務(wù)器證書,一個是受信任的客戶端證書:

keytool -list -keystore /Users/.../CA/tomcat.keystore

(tomcat為你設(shè)置服務(wù)器端的證書名)。

證書列表


4、客戶端信任服務(wù)端證書

? ? ? ? 由于是雙向SSL認(rèn)證,客戶端也要驗證服務(wù)器證書,因此,必須把服務(wù)器證書添加到瀏覽器的“受信任的根證書頒發(fā)機構(gòu)”。由于不能直接將keystore格式的證書庫導(dǎo)入,必須先把服務(wù)器證書導(dǎo)出為一個單獨的CER文件,使用如下命令:

localhost:CA xry$ keytool -export -keystore /Users/xry/Library/Apache/CA/tomcat.keystore -alias tomcat -file /Users/xry/Library/Apache/CA/tomcat.cer

注:(tomcat為你設(shè)置服務(wù)器端的證書名)。 通過以上命令,服務(wù)器證書就被我們導(dǎo)出到“/Users/.../CA/tomcat.cer”文件了。雙擊tomcat.cer文件,按照提示安裝證書,將證書填入到“受信任的根證書頒發(fā)機構(gòu)”。

如圖:

二、Tomcat服務(wù)器配置使其支持HTTPS

1、配置server.xml文件

? ? ? ? 打開Tomcat根目錄下的/conf/server.xml,找到Connector port=”8443”配置段,去掉注釋并修改如下:

server.xml配置

2、配置web.xml文件

? ? ? ? 打開/conf/web.xml,在最后添加如下內(nèi)容進行HTTPS強制訪問:

web.xml配置

這樣tomcat就能支持SSL雙向認(rèn)證了。

3、注意事項

A、tomcat6中protocol=”HTTP/1.1”, tomcat7中protocol=”org.apache.coyote.http11.Http11Protocol”;

B、如果要用Eclipse進行測試,必須修改Eclipse工作目錄(workspace)下Servers文件夾下的tomcat配置文件才能生效,修改tomcat實際目錄下的配置文件是無效的,切記!

C、server.xml文件中非SSL的Connector不能刪除,刪除后tomcat啟動不了,會報超時錯誤,切記!

D、如果只是支持客戶端認(rèn)證服務(wù)端把clientAuth改為false就可以了。

部分內(nèi)容參考Mac OS X配置tomcat支持HTTPS - 簡書,引文中有幾處編譯失敗,本文中有做修改

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容