Tomcat簡單配置實現SSL單向認證

項目中需要實現SSL,因爲是第一次研究,爲防備日後遺忘,特做如下備忘。同時希望對沒有做過此配置的同學們有一點幫助,整個過程非常簡單,僅需要以下幾步就可以實現。

 

需要環境:

JDK1.5 (1.4以下版本需要單獨下載證書生成工具)

TOMCAT

 

一. 生成證書

用JDK自帶的證書生工具生成證書

命令行模式下設置路徑爲 %java_home%/bin,使用如下命令

 

keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=Beijing, st=Beijing, c=CN" -keystore server/server_keystore
    
     -genkey[產生密鑰對]

     -alias[密鑰對別名]

     -validity[密鑰有效期]

     -keyalg[密鑰算法參數]

     -keysize[密鑰位數]

     -keypass[密鑰保護密碼]

     -storepass[存儲密碼]

     -dname[別名相關附加信息]

     -keystore[密鑰存儲文件路徑]
    
     [注] -alias後的tomcat_server是密鑰對的名字可替換爲自己需要的名字;
     -keypass和-storepass後的changeit爲保護密碼必須6位,將其替換爲你的密碼即可;
     -dname爲包含的server信息。其中cn是服務器的名字一定要和WEB服務器中設置的相同。

 

 

編輯tomcat的設置文件server.xml,去掉下面SSL Connector的註釋,修改爲如下:


  <!-- Define an SSL HTTP/1.1 Connector on port 8443 -->

  <Connector    port="8443" minProcessors="5" maxProcessors="75"
          enableLookups="true"
          acceptCount="10" debug="0" scheme="https" secure="true"
          clientAuth="false" keystoreFile="tomcat.keystore"  keystorePass ="密碼"
          keystorePass="tomcat" protocol="TLS"/>
  </Connector>


keystoreFile的路徑是TOMCAT的安裝路徑下的tomcat.keystore(使用keytool生成的證書庫文件)

二. 配置Tomcat


主要配置Tomcat安裝目錄conf目錄下server.xml文件,其中已經有相關代碼,只是被註釋了,還原出來就可以了。

我使用的Tomcat 5.5,以此爲例

<Connectorport="8443"
maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"disableUploadTimeout="true"
acceptCount="100"debug="0"scheme="https"secure="true">
clientAuth="false"keystoreFile="server.keystore" keystorePass="password" protocol="SSL"
</Connector>

 

常用的設置屬性如下:
clientAuth
如果想要Tomcat爲了使用這個socket而需求所有SSL客戶出示一個客戶證書,置該值爲true。 
keystoreFile
如果創建的keystore文件不在Tomcat認爲的缺省位置(一個在Tomcat運行的home目錄下的叫.keystore的文件),則加上該屬性。能指定一個絕對路徑或依賴$CATALINA_BASE環境變量的相對路徑。
keystorePass
如果使用了一個和Tomcat預期不同的keystore(和證書)密碼,則加入該屬性。 
keystoreType
如果使用了一個PKCS12 keystore,加入該屬性。有效值是JKS和PKCS12。 
sslProtocol
socket使用的加密/解密協議。如果使用的是Sun的JVM,則不建議改動這個值。據說IBM的1.4.1版的TLS協議的實現和一些流行的瀏覽器不兼容。這種情況下,使用SSL。 
ciphers
此socket允許使用的被逗號分隔的密碼列表。缺省情況下,能使用所有可用的密碼。 
algorithm
使用的X509算法。缺省爲Sun的實現(SunX509)。對於IBM JVMS應該使用ibmX509。對於其他JVM,參考JVM文件取正確的值。 
truststoreFile
用來驗證客戶證書的TrustStore文件。 
truststorePass
訪問TrustStore使用的密碼。缺省值是keystorePass。 
truststoreType
如果使用一個不同於正在使用的KeyStore的TrustStore格式,加入該屬性。有效值是JKS和PKCS12。 

 

完成!

 

 

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