Step1,创建服务器端certificate keystore和自签名certificate。
在命令行下使用如下命令:
C:\Documents and Settings\new>keytool -genkey -alias mykey -keyalg RSA -keystore server.keystore
输入keystore密码:123456
再次输入新密码:123456
您的名字与姓氏是什么?
[Unknown]: test
您的组织单位名称是什么?
[Unknown]: work
您的组织名称是什么?
[Unknown]: china
您所在的城市或区域名称是什么?
[Unknown]: jn
您所在的州或省份名称是什么?
[Unknown]: sd
该单位的两字母国家代码是什么
[Unknown]: cn
CN=test, OU=work, O=china, L=jn, ST=sd, C=cn 正确吗?
[否]: y
输入<mykey>的主密码
(如果和 keystore 密码相同,按回车):
在C:\Documents and Settings\new下可以找到一个文件:server.keystore,其中就包含了自签名的证书。
注意:
这里要求certificate keystore 和certificate的密码一致,此为Tomcat的约束。
Step2,在tomcat安装目录下新建目录keystore,并拷贝server.keystore到其目录下。
(如我的tomcat安装目录C:\Program Files\Apache Software Foundation\Tomcat 6.0)
Step3,修tomcat安装目录下/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"/>
注意:
在原有的server.xml中有<connector></connector>标记对,但是注释了的,记的去掉注释
keystoreFile指向文件%TOMCAT_HOME%/keystore/server.keystore文件。
keystorePass就是刚才生成certificate keystore的密码。
Step4,测试Https。访问https://localhost:8443/,提示有不安全的证书,接受证书,看到可亲的tom猫。
延伸
某些情况下,某些特定资源需要走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/choose/login.jsp