首先使用以下指令生成密鑰庫
keytool -genkey -alias tomcat -keyalg RSA
我輸入的密鑰密碼是123456
組織機關名稱就是你的域名,我的就是localhost
得到一個.keystore的檔案,我把這個檔案複制到tomcat的conf檔案目錄裡面
在tomcat的server.xml中添加一個connector,代碼如下

1 <Connector
2 protocol="org.apache.coyote.http11.Http11NioProtocol"
3 port="8443" maxThreads="200"
4 scheme="https" secure="true" SSLEnabled="true"
5 keystoreFile="conf/.keystore" keystorePass="123456"
6 clientAuth="false" sslProtocol="TLS"/>

然後重新開機tomcat,在浏覽器中輸入https://localhost:8443就能看到安全連接配接提示。
轉載位址:http://ln-ydc.iteye.com/blog/1330674
内容概覽:
如果希望 Tomcat 支援 Https,主要的工作是配置 SSL 協定
1.生成安全證書
2.配置tomcat
---------------------------------------------------------------------------------------------------------------------------
預備知識:
sso
cas
ssl
https
ca
環境:
1.java 1.6
2.tomcat 6_0_26
生成安全證書:
1.java環境:因為SUN公司提供了制作證書的工具keytool。
在JDK 1.4以後的版本中都包含了這一工具,它的位置為<JAVA_HOME>\bin\keytool.exe。
2.建立證書的指令:
Cmd代碼
- keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"
參數的意思如下:
這裡密碼我輸的是tomcat,名字與姓氏為域名,其它的根據具體情況輸入
以上指令将生産一對非對稱密鑰和自我簽名的證書f:\tomcat.keystore.
将證書儲存到你要存放的地方,我的儲存在D:\Tools\Web\ssl\tomcat.keystore
注意:“名字與姓氏”應該是域名,輸成了姓名,和真正運作的時候域名不符,會出問題
配置tomcat:
定位到tomcat的安裝目錄,找到conf下的server.xml檔案
找到如下已經被注釋的代碼:
Xml代碼
- <!--
- <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"/>
這裡,密碼和證書的位置根據個人的具體環境而設定,屬性參數如下所述:
屬性 | 描述 |
clientAuth | 如果設為true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證 |
keystoreFile | 指定keystore檔案的存放位置,可以指定絕對路徑,也可以指定相對于<CATALINA_HOME>(Tomcat安裝目錄)環境變量 的相對路徑。如果此項沒有設定,預設情況下,Tomcat将從目前作業系統使用者的使用者目錄下讀取名為“.keystore”的檔案。 |
keystorePass | 指定keystore的密碼,如果此項沒有設定,在預設情況下,Tomcat将使用“changeit”作為預設密碼。 |
sslProtocol | 指定套接字(Socket)使用的加密/解密協定,預設值為TLS,使用者不應該修改這個預設值。 |
ciphers | 指定套接字可用的用于加密的密碼清單,多個密碼間以逗号(,)分隔。如果此項沒有設定,在預設情況下,套接字可以使用任意一個可用的密碼。 |
通路支援ssl的web站點:
啟動本場tomcat,在浏覽器中輸入:https://localhost:8443/ ,這裡用ie通路
選擇繼續浏覽此網站
成功!!
遇到的問題:
我在配置的過程中問題,當我修改了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)
網上找了下,
其實就是将protocol="HTTP/1.1"替換為protocol="org.apache.coyote.http11.Http11Protocol",問題得以解決;
APR給Tomcat的性能提升起到很大作用,建議配置APR方式,這樣就可以了