Tomcat6和Tomcat7配置SSL通訊的比較

來源:互聯網
上載者:User
《Tomcat6和Tomcat7配置SSL通訊的比較》

作者:chszs,轉載需註明。部落客頁:http://blog.csdn.net/chszs
在項目開發過程中,嘗嘗會遇到Tomcat需要SSL通訊的需求。尤其是在需要安全Web應用時,需要HTTPS協議的通訊。由於Tomcat預設情況下沒有提供SSL通訊設定,因此必須明白如何在Tomcat下配置SSL。更糟糕的是,Tomcat的不同版本,其SSL配置有所不同。所以,本文將講述如何在Tomcat的主要版本(即6和7)下,配置SSL通訊。

SSL、HTTPS和認證是任何Java程式員都應該瞭解的基礎知識,尤其是對那些開發金融和安全敏感類的互連網應用的開發人員。SSL、HTTPS和認證三者的協同工作,保證了用戶端和伺服器的安全通訊。

開發使用HTTP協議訪問的Web應用,安全是主要關心的問題。由於HTTP協議是以純文字格式傳輸資料的,它在傳輸敏感資訊(如使用者名稱、密碼、社保號、信用卡資訊等)時,是很不安全的。HTTP協議不能保證網站的可靠性,URL的重新導向可以使得假冒網站代替真正的網站,HTTP是不會阻止這一切的,也不會提醒使用者。
HTTPS和SSL就是解決上述問題的。HTTPS是HTTP之上的SSL,SSL代表安全通訊端層,它提供了網站的加密和驗證。所以,那些商務網站、銀行都在使用HTTPS協議。當使用HTTPS協議進行資料轉送時,在用戶端和伺服器端之間傳輸前,資料是加密了的。因此,任何人都可以攔截或捕獲HTTPS,但是看不到真實的內容。SSL還利用第三方發行機構(如VeriSign、godaddy,thwate等)發行的認證來驗證網站的真實可靠性。

認證是怎樣工作的呢?當用戶端瀏覽器使用HTTPS串連到伺服器,伺服器返回第三方機構發行的認證。如果認證是Java程式,能訪問到認證keystore和truststore的存根,瀏覽器端也有儲存的可信認證,可驗證伺服器提供的認證。如果瀏覽器或任何Java用戶端,沒有找到這些認證,它會警告說認證不可識別,推薦你不訪問此網站。你也可以手動信任任何網站,請求瀏覽器相信伺服器提供的認證。

在開發的情況下,Tomcat返回自簽名的認證或測試認證。對於Java程式員,JDK內建了一個keytool工具,他能用於建立自簽名的認證,並儲存到keystore和truststore供使用。

你可以從Windows的支援小組請求認證,或者使用工具如IBM IkeyMan或keytool命令產生認證,並放入truststore和keystore中。
一旦認證已經準備好,開啟Tomcat/conf目錄下的server.xml設定檔,尋找Connector標籤,它定義HTTPS通訊,通常它被注釋掉了,所以可以尋找“Define a SSL HTTP/1.1 Connector on port 8443”,一旦找到,使用下面的配置進行替換。

在Tomcat6中定義SSL通訊:

<Connector protocol="org.apache.coyote.http11.Http11Protocol"    port="8443" minSpareThreads="5" maxSpareThreads="75"    enableLookups="true" disableUploadTimout="true"    acceptCount="100"  maxThreads="200"    scheme="https" secure="true" SSLEnabled="true"    clientAuth="false" sslProtocol="TLS"    keystoreFile="${catalina.home}/conf/server.jks"    keystoreType="JKS" keystorePass="changeit" />

還需修改這個:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

在Tomcat7中配置SSL通訊:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"    maxThreads="150" scheme="https" secure="true"    clientAuth="false" sslProtocol="TLS"    keystoreFile="${catalina.home}/conf/server.jks"    keystoreType="JKS" keystorePass="changeit" />

怎樣配置Java Web程式使用HTTPS

如果想要你的JavaEE Web程式使用HTTPS協議實現SSL通訊,你需要在web.xml設定檔中添加:

<security-constraint>  <web-resource-collection>    <web-resource-name>HelloSSL</web-resource-name>    <url-pattern>/*</url-pattern>  </web-resource-collection>  <user-data-constraint>    <transport-guarantee>CONFIDENTIAL</transport-guarantee>  </user-data-constraint></security-constraint>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.