在Tomcat中實現https安全鏈接

SSL, 或者Secure Socket Layer,是一種容許web瀏覽器和web服務器經過一個安全的鏈接進行交流的技術。這意味着將被髮送的數據在一端被翻譯成密碼,傳送出去,而後在另外一端解開密碼,再進行處理。這是一個雙向的過程,也就是瀏覽器和服務器都須要在發送數據以前對它們進行加密。html

  SSL協定的另外一個重要方面是認證(Authentication)。這就是說,在你開始試圖經過一個安全鏈接與一個web服務器交流的時候,這個服務器會要求你的瀏覽器出示一組證件,經過「鑑定」的方式來證實這就是你所聲明的網站。web

  在某些狀況下,服務器還會要求你的web瀏覽器的認證書,證實你就是你所說的那我的。這就是所知的「客戶認證」,儘管實際狀況中,更多地用在商務-對-商務(B2B)交易,而不是對我的用戶。算法

  但大多數有SSL功能的web服務器不要求客戶認證(Client Authentication)。瀏覽器

  證書tomcat

  爲了能實施SSL,一個web服務器對每一個接受安全鏈接的外部接口(IP 地址)必需要有相應的證書(Certificate)。關於這個設計的理論是一個服務器必須提供某種合理的保證以證實這個服務器的主人就是你所認爲的那我的。這個證書要陳述與這個網站相關聯的公司,以及這個網站的全部者或系統管理員的一些基本聯繫信息。安全

  這個證書由全部人以密碼方式簽字,其餘人很是難僞造。對於進行電子商務(e- commerce)的網站,或其餘身份認證相當重要的任何商業交易,認證書要向你們所熟知的認證權威(Certificate Authority (CA))如VeriSign或Thawte來購買。這樣的證書可用電子技術證實屬實。實際上,認證權威單位會擔保它發出的認證書的真實性,若是你信任發出認證書的認證權威單位的話,你就能夠相信這個認證書是有效的。服務器

  在許多狀況下,認證並非真正令人擔心的事。系統管理員或許只想要保證被服務器傳送和接收的數據是祕密的,不會被鏈接線上的偷竊者盜竊到。慶幸的是,Java提供相對簡單的被稱爲keytool的命令行工具,能夠簡單地產生「本身簽名」的證書。本身簽名的證書只是用戶產生的證書,沒有正式在你們所熟知的認證權威那裏註冊過,所以不能確保它的真實性。但卻能保證數據傳輸的安全性。socket

  認證也許很重要,也許不重要,徹底決定於網站的須要。ide

  用Tomcat來配置SSL主要有下面這麼兩大步驟:工具

  1、生成證書

  一、 在命令行下執行:

  %Java_home%\bin\keytool -genkey -alias tomcat -keyalg RSA

  在此命令中,keytool是JDK自帶的產生證書的工具。把RSA運算法則做爲主要安全運算法則,這保證了與其它服務器和組件的兼容性。

  這個命令會在用戶的home directory產生一個叫作" .keystore " 的新文件。在執行後,你首先被要求出示keystore密碼。Tomcat使用的默認密碼是" changeit "(全都是小寫字母),若是你願意,你能夠指定你本身的密碼。你還須要在server.xml配置文件裏指定本身的密碼,這在之後會有描述。

  二、 你會被要求出示關於這個認證書的通常性信息,如公司,聯繫人名稱,等等。這些信息會顯示給那些試圖訪問你程序裏安全網頁的用戶,以確保這裏提供的信息與他們指望的相對應。

  三、 你會被要求出示密鑰(key)密碼,也就是這個認證書所特有的密碼(與其它的儲存在同一個keystore文件裏的認證書不一樣)。你必須在這裏使用與keystore密碼相同的密碼。(目前,keytool會提示你按ENTER鍵會自動幫你作這些)。

  若是一切順利,你如今就擁有了一個能夠被你的服務器使用的有認證書的keystore文件。

  2、配置tomcat

  第二個大步驟是把secure socket配置在$CATALINA_HOME/conf/server.xml文件裏。$CATALINA_HOME表明安裝Tomcat的目錄。一個例子是SSL鏈接器的元素被包括在和Tomcat一塊兒安裝的缺省server.xml文件裏。它看起來象是這樣:

  
  
  
  
  $CATALINA_HOME / conf / server.xml    < -- Define a SSL Coyote HTTP / 1.1 Connector on port 8443 -->    < !--    < Connector   port = " 8443 " minProcessors = " 5 " maxProcessors = " 75 "   enableLookups = " true " disableUploadTimeout = " true "   acceptCount = " 100 " debug = " 0 " scheme = " https " secure = " true " ;   clientAuth = " false " sslProtocol = " TLS " />    -->

  Connector元素自己,其默認形式是被註釋掉的(commented out),因此須要把它周圍的註釋標誌刪除掉。而後,能夠根據須要客戶化(本身設置)特定的屬性。通常須要增長一下keystoreFile和 keystorePass兩個屬性,指定你存放證書的路徑(如:keystoreFile="C:/.keystore")和剛纔設置的密碼(如: keystorePass="123456")。關於其它各類選項的詳細信息,可查閱Server Configuration Reference。

  在完成這些配置更改後,必須象從新啓動Tomcat,而後你就能夠經過SSL訪問Tomcat支持的任何web應用程序。只不過指令須要像下面這樣:https://localhost:8443

相關文章
相關標籤/搜索