內(nèi)容概覽: 如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 協(xié)議 1.生成安全證書 2.配置tomcat --------------------------------------------------------------------------------------------------------------------------- 預(yù)備知識: sso cas ssl https ca --------------------------------------------------------------------------------------------------------------------------- 環(huán)境: 1.java 1.6 2.tomcat 6_0_26 --------------------------------------------------------------------------------------------------------------------------- 生成安全證書: 1.java環(huán)境:因為SUN公司提供了制作證書的工具keytool。 在JDK 1.4以后的版本中都包含了這一工具,它的位置為<JAVA_HOME>\bin\keytool.exe。 2.創(chuàng)建證書的命令: - keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"
參數(shù)的意思如下: 這里密碼我輸?shù)氖莟omcat,名字與姓氏為域名,其它的根據(jù)具體情況輸入 以上命令將生產(chǎn)一對非對稱密鑰和自我簽名的證書f:\tomcat.keystore. 將證書保存到你要存放的地方,我的保存在D:\Tools\Web\ssl\tomcat.keystore 注意:“名字與姓氏”應(yīng)該是域名,輸成了姓名,和真正運行的時候域名不符,會出問題 --------------------------------------------------------------------------------------------------------------------------- 配置tomcat: 定位到tomcat的安裝目錄,找到conf下的server.xml文件 找到如下已經(jīng)被注釋的代碼: - <!--
- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS" />
- -->
去掉注釋,修改為: - <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS"
- keystoreFile="D:\Tools\Web\ssl\tomcat.keystore"
- keystorePass="tomcat"
- ciphers="tomcat"/>
這里,密碼和證書的位置根據(jù)個人的具體環(huán)境而設(shè)置,屬性參數(shù)如下所述: 屬性 | 描述 | clientAuth | 如果設(shè)為true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進(jìn)行身份驗證 | keystoreFile | 指定keystore文件的存放位置,可以指定絕對路徑,也可以指定相對于<CATALINA_HOME>(Tomcat安裝目錄)環(huán)境變量 的相對路徑。如果此項沒有設(shè)定,默認(rèn)情況下,Tomcat將從當(dāng)前操作系統(tǒng)用戶的用戶目錄下讀取名為“.keystore”的文件。 | keystorePass | 指定keystore的密碼,如果此項沒有設(shè)定,在默認(rèn)情況下,Tomcat將使用“changeit”作為默認(rèn)密碼。 | sslProtocol | 指定套接字(Socket)使用的加密/解密協(xié)議,默認(rèn)值為TLS,用戶不應(yīng)該修改這個默認(rèn)值。 | ciphers | 指定套接字可用的用于加密的密碼清單,多個密碼間以逗號(,)分隔。如果此項沒有設(shè)定,在默認(rèn)情況下,套接字可以使用任意一個可用的密碼。 |
訪問支持ssl的web站點: 啟動本場tomcat,在瀏覽器中輸入:https://localhost:8443/ ,這里用ie訪問 選擇繼續(xù)瀏覽此網(wǎng)站
成功!!
遇到的問題: 我在配置的過程中問題,當(dāng)我修改了server.xml的配置后,啟動tomcat報錯 java.lang.Exception: No Certificate file specified or invalid file format
at org.apache.tomcat.jni.SSLContext.setCertificate(Native Method)
at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:761)
at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:109)
at org.apache.catalina.connector.Connector.initialize(Connector.java:1123)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
網(wǎng)上找了下, 其實就是將protocol="HTTP/1.1"替換為protocol="org.apache.coyote.http11.Http11Protocol",問題得以解決; APR給Tomcat的性能提升起到很大作用,建議配置APR方式,這樣就可以了
|