這個簡短的例子中咱們將看到如何去配置Tomcat來支持SSL協議,以及HTTPS鏈接。html
爲服務器生成一個自簽名的證書java
要想讓SSL可以工做就必須讓服務器能向客戶端證實本身的身份。要實現這個服務器就須要有一個證書。固然了,在互聯網環境中部署一臺安全的WEB服務器的話,你須要一個知名的可信的認證中心,好比Verisign。不過在這個例子中咱們準備使用的是一個自簽名的證書。也就是說,這個證書是由發佈者本身進行簽名的。正如你將看到的那樣,瀏覽器(客戶端)會識別出這個,讓咱們來判斷是否信任這臺服務器。程序員
要建立一個自簽名的證書很是簡單。有許多執行這種操做的工具可選,好比openssl。在咱們的例子中使用的是keytool,它是一個Java JDK發佈時自帶的一個命令行工具。它就在你的JDK_HOME/bin目錄中。算法
這就是我用來生成一個自簽名證書所使用的命令:瀏覽器
F:\nikos7\Desktop>keytool -genkey -alias javacodegeeks -keyalg RSA -keystore F:\nikos7\Desktop\keystore
下面是終端的截圖:tomcat
下面是可選擇的選項:安全
-genkey: 用來生成一個公鑰和私鑰對。公鑰會存儲在服務端的證書中。私鑰則必須是服務端私有的。服務器
-alias: 定義密鑰庫的一個惟一的別名。微信
-keyalg: 定義生成密鑰對所使用的算法。在這裏咱們用的是RSA。工具
-keystore: 定義存儲證書和密鑰對的路徑。
密鑰庫是密鑰和證書的一個安全的存儲設施。裏面的每個密鑰都只能經過一個惟一的別名和一個密碼來進行訪問。
配置Tomcat來使用SSL
如今咱們須要配置Tomcat來接收HTTPS的鏈接。咱們須要告訴服務器來使用咱們的密鑰庫來給客戶端提供一個有效的證書。
你須要進入到CATALINA_BASE/conf目錄中並編輯在那找到的那個server.xml文件。把下面的XML代碼粘貼到裏面:
server.xml;
... <Connector port="8444" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="F:\nikos7\Desktop\keystore" keystorePass="1234567" />...
這會定義一個新的Tomcat Connector。Connector是Tomcat的一個模塊,它使用服務器能夠接收請求,並將它們傳遞給所請求的WEB應用,而後將響應及動態內容回傳回外部世界。要定義一個Connector你須要指定它所監聽的端口,所接收的協議以及其它一些參數,好比最大的線程數等等。在這裏咱們還打開了SSL標記,並指定了咱們的密鑰庫所在的位置及密碼。最後,你須要重啓一下Tomcat。
如今,當你在瀏覽器中輸入這個URL的時候:
https://localhost:8444/
你會收到一個警告請求,它會提示你正在訪問一個未授信的WEB站點。若是你接受了這個風險並繼續的話,你會在你的瀏覽器中看到相似下面的一個界面:
注意URL欄中那個紅色的HTTPS的標記。這意味着咱們的瀏覽器並不信任這個站點,由於服務器提供的這個簽名的證書它在認證中心沒法經過校驗。
這就是如何配置Tomcat支持SSL或者HTTPS的一個例子。
原創文章轉載請註明出處:如何配置Tomcat支持SSL或HTTPS
===========================================
歡迎關注微信公衆號:java_diaosi
屌絲Java程序員
有更多java技術文章分享。