歡迎您光臨本站 註冊首頁

tomcat實現SSL配置

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

 tomcat實現SSL配置
 
 tomcat實現SSL配置
 編輯tomcat的配置文件server.xml,去掉下面SSL Connector的註釋,修改為如下:
   

;
 
   <Connector className="org.apache.catalina.connector.http.HttpConnector"
          port="8443" minProcessors="5" maxProcessors="75"
           enableLookups="true"
     acceptCount="10" debug="0" scheme="https" secure="true">;
    <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
          clientAuth="false" keystoreFile="tomcat.keystore"
           keystorePass="tomcat" protocol="TLS"/>;
   ;
 keystoreFile的路徑是TOMCAT的安裝路徑下的tomcat.keystore(使用keytool生成的證書庫文件)
 >;keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore
 keystoreFile保存了伺服器端的證書庫,用於客戶端認證。
 
 常用的配置屬性:
 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。
 
 
 使用https://localhost:8443 就可以進行ssl連接的檢測
 
 ----------------------------------------------------------------------------------------
 上訴的SSL連接是客戶端單向認證伺服器,如果雙向認證,將server.xml文件的Connector配置
 clientAuth="false"
 Java伺服器端的證書庫,伺服器認證客戶端時使用的根證書庫。
 證書庫位置:JAVA_HOME/jre/lib/security/cacerts keystore密碼為:changeit
 
 將客戶端個人證書的根證書導入伺服器的證書庫,就可以認證客戶端。
 
 伺服器端證書的生成:
 >;keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore
 >;keytool -certreq -alias tomcat -file Server.csr -keystore tomcat.keystore 生成證書請求文件
 使用openssl命令用根證書籤名,再導入簽名證書
 >;keytool -import -trustcacerts -alias tomcat -file Server.pem -keystore tomcat.keystore
 注意-trustcacerts選項,使用伺服器的證書庫認證該證書,首先要將根證書導入cacerts中。
 
 ----------------------------------------------------------------------------------------
 Tomcat配置SSL,我出現的問題
 我用openssl創建了CA證書,Server證書,Client證書。
 使用keytool將Server證書導入tomcat.keystore文件中,將Tomcat的配置文件server.xml關於SSL的配置設為keystoreFile=tomcat.keystore.SSL連接時,客戶端認證tomcat.keystore中的伺服器證書。
 將CA證書導入$JAVA_HOME\jre\lib\security\cacerts這個keystore中,用於驗證客戶端證書。
 在IE中安裝CA證書和Client證書(pkcs12,包含私鑰的個人證書形式)。
 建立SSL連接https://localhost:8443,連接失敗。
 
 經過反覆思量,知道問題所在,SSL連接時,客戶端認證伺服器時,需要驗證伺服器的簽名,那麼tomcat.keystore中就應該有Server的私鑰。所以導入Server證書時,應該導入包含私鑰的Server證書。
 keytool命令不能導入私鑰文件,可以通過在keystore中生成自簽名證書,導出證書請求,用CA證書籤名后,在導回的方法。
 導回簽名證書的過程
 >;keytool -import -trustcacerts -alias tomcat -file Server.pem -keystore tomcat.keystore
 注意-trustcacerts選項,使用伺服器的證書庫認證該證書,首先要將根證書導入Java的根證書庫中:JAVA_HOME\jre\lib\security\cacerts中。
 
 ----------------------------------------------------------------------------------------
 分析IE實現實現SSL連接的中的證書雙向認證過程
 在地址欄中輸入https://localhost:8443
 客戶端向伺服器發送hello消息,tomcat伺服器偵聽8443埠,收到SSL連接的hello消息,伺服器發送server certificate,並且發送client certificate request.客戶端IE收到server certificate后取出issuer項,和IE受信任的根證書庫中證書的subject比對,找到合適的根證書認證server certificate。並且同時向伺服器發送client certificate,伺服器收到client certificate后,tomcat伺服器查找根證書庫cacerts中的根證書的suject,找到合適的根證書認證client certificate.在認證的同時完成密鑰協商。客戶端認證結束后,IE會彈出"安全警報"對話框,用戶可以查看伺服器證書,以及伺服器證書是否受信任,可以選擇是否繼續SSL連接。



[火星人 ] tomcat實現SSL配置已經有910次圍觀

http://coctec.com/docs/service/show-post-21858.html