Tomcat SSL配置大全

http://esyscn.com/forum.php?mod=viewthread&tid=17085

PT>
由於配置CAS的單點登陸系統,需要先配置 Tomcat的SSL, 在配置tomcat的SSL過程中,我配置的版本是tomcat5.5.20,參考了很多資料,但發現一直不行,後來我換到了5.5.9,結果非常順利,我於是換了總共4個主要版本,發現SSL的配置還真有些不同,現在我將這些配置記錄下來,供下次參考。

參考文檔

Keytool 使用指南:
 
Tomcat-ssl 配置指南:

配置過程

1.       生成 server key :

以命令行方式切換到目錄%TOMCAT_HOME%,在command命令行輸入如下命令(jdk1.4以上帶的工具): 
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600
用戶名輸入域名,如localhost(開發或測試用)或hostname.domainname(用戶擁有的域名),其它全部以 enter 跳過,最後確認,此時會在%TOMCAT_HOME%下生成server.keystore 文件。
注:參數 -validity 指證書的有效期(天),缺省有效期很短,只有90天。

2.  將證書導入的JDK的證書信任庫中:

這步對於T omcat的SSL配置不是必須,但對於CAS SSO是必須的,否則會出現如下錯誤:edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator。。。
導入過程分2步,第一步是導出證書,第二步是導入到證書信任庫,命令如下:
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore  server.keystore -storepass changeit
keytool -import -trustcacerts -alias tomcat -file server.cer -keystore  %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
如果有提示,輸入Y就可以了。
其他有用keytool命令(列出信任證書庫中所有已有證書,刪除庫中某個證書):
keytool -list -v -keystore D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts
keytool -delete -trustcacerts -alias tomcat  -keystore  D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts -storepass changeit

3.  配置TOMCAT :

修改%TOMCAT_HOME%\conf\server.xml,以文字編輯器打開,查找這一行:
xml 代碼
  1.   
將之後的那段的註釋去掉,並加上 keystorePass及keystoreFile屬性。
注意, tomcat 不同版本配置是不同的:

Tomcat4.1.34 配置:

                                                                                      
xml 代碼
  1.   
  2.     < Connector   className = "org.apache.coyote.tomcat4.CoyoteConnector"   
  3.             port = "8443"   enableLookups = "true"   scheme = "https"   secure = "true"   
  4.             acceptCount = "100"   
  5.             useURIValidationHack = "false"   disableUploadTimeout = "true"   
  6.             clientAuth = "false"   sslProtocol = "TLS"     
  7.             keystoreFile = "server.keystore"     
  8.             keystorePass = "changeit" />   

Tomcat5.5.9 配置: 
 
xml 代碼
  1.   
  2. < Connector   port = "8443"   maxHttpHeaderSize = "8192"   
  3.             maxThreads = "150"   minSpareThreads = "25"   maxSpareThreads = "75"   
  4.             enableLookups = "false"   disableUploadTimeout = "true"   
  5.             acceptCount = "100"   scheme = "https"   secure = "true"   
  6.             clientAuth = "false"   sslProtocol = "TLS"     
  7.             keystoreFile = "server.keystore"     
  8.             keystorePass = "changeit" />   

Tomcat5.5.20 配置 ( 此配置同樣可用於 Tomcat6.0)  
 

xml 代碼
  1.   
  2. < Connector   protocol = "org.apache.coyote.http11.Http11Protocol"     
  3.                       port = "8443"   maxHttpHeaderSize = "8192"   
  4.             maxThreads = "150"   minSpareThreads = "25"   maxSpareThreads = "75"   
  5.             enableLookups = "false"   disableUploadTimeout = "true"   
  6.             acceptCount = "100"   scheme = "https"   secure = "true"   
  7.             clientAuth = "false"   sslProtocol = "TLS"                    
  8.             keystoreFile = "server.keystore"     
  9.             keystorePass = "changeit" />   

Tomcat6.0.10 配置:

xml 代碼
  1. < Connector   protocol = "org.apache.coyote.http11.Http11NioProtocol"   
  2.             port = "8443"   minSpareThreads = "5"   maxSpareThreads = "75"   
  3.             enableLookups = "true"   disableUploadTimeout = "true"     
  4.             acceptCount = "100"    maxThreads = "200"   
  5.             scheme = "https"   secure = "true"   SSLEnabled = "true"   
  6.             clientAuth = "false"   sslProtocol = "TLS"   
  7.             keystoreFile = "D:/tools/apache-tomcat-6.0.10/server.keystore"     
  8.             keystorePass = "changeit" />   
tomcat6支持3種,請參考以下文檔:

驗證配置

<connector protocol="org.apache.coyote.http11.Http11NioProtocol"></connector>
原文好像有點問題:

導入過程分2步,第一步是導出證書,第二步是導入到證書信任庫,命令如下:
keytool -import -trustcacerts -alias tomcat -file server.cer -keystore  cacerts -storepass changeit
(應該修正爲
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore server.keystore -storepass changeit
keytool -import -trustcacerts -alias tomcat -file server.cer -keystore  D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts -storepass changeit
爲什麼 
導入過程分2步,第一步是導出證書,第二步是導入到證書信任庫,命令如下: 
keytool -import -trustcacerts -alias tomcat -file server.cer -keystore  cacerts -storepass changeit 
出現 
keytool錯誤: java.io.FileNotFoundException: server.cer (系統找不到指定的文件。)
這句有問題, 
keytool -import -trustcacerts -alias tomcat -file server.cer -keystore  cacerts -storepass changeit 

請將它改爲: 
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore  server.keystore -storepass changeit 

你配置完成後,證書是可以信任的嗎,你的證書如何獲得的,只是用命令生成的嗎

最後順便提一下自己配置的過程,本來一直以爲自己配置的有問題,看了毛毛多的網站,甚至更改了tomcat版本,最後還是出現同樣的問題,什麼invalid security certificate之類的,最後發現是firefox本身的問題因爲證書是自己生成的,所以fire

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章