SSL 或者Secure Socket Layer是一種允許web浏覽器和web服務器通過一個安全的連接進行交流的技術這意味著將被發送的數據在一端被翻譯成密碼傳送出去然後在另一端解開密碼再進行處理這是一個雙向的過程也就是浏覽器和服務器都需要在發送數據之前對它們進行加密
SSL協定的另一個重要方面是認證(Authentication)這就是說在你開始試圖通過一個安全連接與一個web服務器交流的時候這個服務器會要求你的浏覽器出示一組證件通過鑒定的方式來證明這就是你所聲明的網站
在某些情況下服務器還會要求你的web浏覽器的認證書證明你就是你所說的那個人這就是所知的客戶認證盡管實際情況中更多地用在商務對商務(BB)交易而不是對個人用戶
但大多數有SSL功能的web服務器不要求客戶認證(Client Authentication)
證書
為了能實施SSL一個web服務器對每個接受安全連接的外部接口(IP 地址)必須要有相應的證書(Certificate)關於這個設計的理論是一個服務器必須提供某種合理的保證以證明這個服務器的主人就是你所認為的那個人這個證書要陳述與這個網站相關聯的公司以及這個網站的所有者或系統管理員的一些基本聯系信息
這個證書由所有人以密碼方式簽字其他人非常難偽造對於進行電子商務(e commerce)的網站或其他身份認證至關重要的任何商業交易認證書要向大家所熟知的認證權威(Certificate Authority (CA))如VeriSign或Thawte來購買這樣的證書可用電子技術證明屬實實際上認證權威單位會擔保它發出的認證書的真實性如果你信任發出認證書的認證權威單位的話你就可以相信這個認證書是有效的
在許多情況下認證並不是真正使人擔憂的事系統管理員或許只想要保證被服務器傳送和接收的數據是秘密的不會被連接線上的偷竊者盜竊到慶幸的是Java提供相對簡單的被稱為keytool的命令行工具可以簡單地產生自己簽名的證書自己簽名的證書只是用戶產生的證書沒有正式在大家所熟知的認證權威那裡注冊過因此不能確保它的真實性但卻能保證數據傳輸的安全性
認證也許很重要也許不重要完全決定於網站的需要
用Tomcat來配置SSL主要有下面這麼兩大步驟
一生成證書
在命令行下執行
%Java_home%\bin\keytool genkey alias tomcat keyalg RSA
在此命令中keytool是JDK自帶的產生證書的工具把RSA運算法則作為主要安全運算法則這保證了與其它服務器和組件的兼容性
這個命令會在用戶的home directory產生一個叫做 keystore 的新文件在執行後你首先被要求出示keystore密碼Tomcat使用的默認密碼是 changeit (全都是小寫字母)如果你願意你可以指定你自己的密碼你還需要在serverxml配置文件裡指定自己的密碼這在以後會有描述
你會被要求出示關於這個認證書的一般性信息如公司聯系人名稱等等這些信息會顯示給那些試圖訪問你程序裡安全網頁的用戶以確保這裡提供的信息與他們期望的相對應
你會被要求出示密鑰(key)密碼也就是這個認證書所特有的密碼(與其它的儲存在同一個keystore文件裡的認證書不同)你必須在這裡使用與keystore密碼相同的密碼(目前keytool會提示你按ENTER鍵會自動幫你做這些)
如果一切順利你現在就擁有了一個可以被你的服務器使用的有認證書的keystore文件
二配置tomcat
第二個大步驟是把secure socket配置在$CATALINA_HOME/conf/serverxml文件裡$CATALINA_HOME代表安裝Tomcat的目錄一個例子是SSL連接器的元素被包括在和Tomcat一起安裝的缺省serverxml文件裡它看起來象是這樣
$CATALINA_HOME/conf/serverxml
< Define a SSL Coyote HTTP/ Connector on port >
< !
< Connector
port= minProcessors= maxProcessors=
enableLookups=true disableUploadTimeout=true
acceptCount= debug= scheme=https secure=true;
clientAuth=false sslProtocol=TLS/>
>
Connector元素本身其默認形式是被注釋掉的(commented out)所以需要把它周圍的注釋標志刪除掉然後可以根據需要客戶化(自己設置)特定的屬性一般需要增加一下keystoreFile和 keystorePass兩個屬性指定你存放證書的路徑(如keystoreFile=C:/keystore)和剛才設置的密碼(如 keystorePass=)關於其它各種選項的詳細信息可查閱Server Configuration Reference
在完成這些配置更改後必須象重新啟動Tomcat然後你就可以通過SSL訪問Tomcat支持的任何web應用程序只不過指令需要像下面這樣https://localhost:
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29206.html