报表知识库
我要提问

TOMCAT配置SSL认证为HTTPS协议服务

1 . 问题概述 
很多安全性要求较高的系统,都会使用安全套接字层(SSL)进行信息交换,
Sun为了解决在Internet上的实现安全信息传输的解决方案。它实现了SSL和TSL(传输层安全)协议。
在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,
可以在Client和Server之间通过TCP/IP协议安全地传输数据。今天我们利用Tomcat配置SSL,
了解其原理
2 . 案例 
中国登记结算上海分公司对网络的传输都使用安全套接字层(SSL)进行信息交换
3 . 配置文件说明
Keytool使用指南: 
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html
Tomcat-ssl配置指南:
http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html
配置过程
1.生成 server key :
以命令行方式切换到目录%TOMCAT_HOME%,在command命令行输入如下命令(jdk1.4以上带的工具):
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600
用户名输入域名,如localhost(开发或测试用)或hostname.domainname(用户拥有的域名),
其它全部以 enter 跳过,最后确认,此时会在%TOMCAT_HOME%下生成server.keystore文件。 
注:参数 -validity 指证书的有效期(天),缺省有效期很短,只有90天。
 
      
2.将生成的server.keystore文件放在TOMCAT/conf下
3.修改server.xml文件: 
去掉下面SSL Connector的注释,修改为如下:
<!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
<Connector
port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
acceptCount="100" scheme="https"
secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/server.keystore"
keystorePass="changeit" />


参数说明:
clientAuth
如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。
注:本文只说明单向认证,这里设置为false,双向认证的方法,以后有时间再研究。
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。

4.重新启动TOMCAT,访问https://localhost:8443
一般情况下打开页面之前会提示确认证书的内容。选择OK就可以看到页面了

5.安装及查看证书: