Tomcat6.0 SSL的配置
J2EE
2009-07-27 15:30
阅读217 评论0
1. 参考:
Tomcat 6.0 自带的文档docs/ssl-howto.html,详细介绍了配置过程。
2. 目的:
以下详细描述配置过程,仅作为备忘录。
3. 备忘录:
Step1,安装tomcat 6.0.18,此为当前最新版本,需JDK5.0或以上。
l
JDK安装后,可以在命令行下使用如下命令检测是否成功。
C:\Documents and
Settings\new>java -version
java version "1.6.0_10"
Java(TM) SE Runtime
Environment (build 1.6.0_10-b33)
Java HotSpot(TM)
Client VM (build 11.0-b15, mixed mode, sharing)
看到以上蓝色信息,则表示JDK安装配置成功。
l
Tomcat的运行需要配置JDK_HOME和JRE_HOME环境变量,JRE_HOME默认等于JDK_HOME的值。
Step2,创建服务器端certificate
keystore和自签名certificate。
在命令行下使用如下命令:
C:\Documents and Settings\new>keytool
-genkey -alias mykey -keyalg RSA -keystore server.keystore
输入keystore密码:123456
再次输入新密码:123456
您的名字与姓氏是什么?
[Unknown]: dinstone
您的组织单位名称是什么?
[Unknown]: advance software ltd.
您的组织名称是什么?
[Unknown]: china
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的州或省份名称是什么?
[Unknown]: beijing
该单位的两字母国家代码是什么
[Unknown]: cn
CN=dinstone, OU=advance software ltd.,
O=china, L=beijing, ST=beijing, C=cn 正确吗?
[否]: y
输入<mykey>的主密码
(如果和 keystore 密码相同,按回车):
在C:\Documents and Settings\new下可以找到一个文件:server.keystore,其中就包含了自签名的证书。
注意:
这里要求certificate
keystore 和certificate的密码一致,此为Tomcat的约束。
Step3,在%TOMCAT_HOME%目录下新建目录keystore,并拷贝server.keystore到其目录下。
Step4,修改%TOMCAT_HOME%/conf/server.xml文件。添加https的Connector。
<Connector
port="8443" minSpareThreads="5"
maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100"
maxThreads="200"
scheme="https" secure="true"
SSLEnabled="true"
keystoreFile="keystore/server.keystore"
keystorePass="123456"
clientAuth="false" sslProtocol="TLS"/>
注意:
keystoreFile指向文件%TOMCAT_HOME%/keystore/server.keystore文件。
keystorePass就是刚才生成certificate
keystore的密码。
Step5,测试Https。访问https://localhost:8443/,提示有不安全的证书,接受证书,看到可亲的tom猫。
4. 延伸
某些情况下,某些特定资源需要走https协议,如登录请求。这时,我们可以在web.xml中配置约束。
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL
Resource</web-resource-name>
<url-pattern>/login.jsp</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>
CONFIDENTIAL
</transport-guarantee>
</user-data-constraint>
</security-constraint>
这样当使用如下请求访问登录页面时,则服务器将该请求建立在https连接上。
http://localhost:8080/CCB/login.jsp