配置Tomcat+java+ssl安全证书无效的原因
记得2008年9月初的样子,公司一实施人员打电话来,说,按照按照手册上的方法配置Tomcat+java+ssl安全证的方法没有生效,根本无法使用HTTPS方式访问页面。
开始以为是他的配置方法或者某一环节有问题,打算通过VPN上去帮他配置。
奇怪的事情发生了,我以非常熟练得速度按照手册上的方法配置成功,但居然也无法使用HTTPS方式访问页面。(这个我以前配置过不少次,难道是环境问题....)
正在大家百思不得其解的状况下..........终于发现了一个问题。
先卖个关子............呵呵。
我先说说如何配置Tomcat+java+ssl安全证,然后再说是怎么解决现场实施人员的问题的。
一. 配置Tomcat+java+ssl安全证的方法:
配置过程
1. 生成 name key :
以命令行方式切换到目录%TOMCAT_HOME%,在command命令行输入如下命令(jdk1.4以上带的工具):
keytool-genkey -alias tomcat -keyalg RSA -keypass password -storepass password-keystore name.keystore -validity 3600
keytool -genkey -alias tomcat-keyalg RSA -keystore F:\tomcat.keystore -validity 36500
用户名输入域名,如localhost(开发或测试用)或hostname.domainname(用户拥有的域名),其它全部以 enter 跳过,最后确认,此时会在%TOMCAT_HOME%name.keystore 文件。
注:参数 -validity 指证书的有效期(天),缺省有效期很短,只有90天。
2. 将证书导入的JDK的证书信任库中:
这步对于Tomcat的SSL配置不是必须,但对于CAS SSO是必须的,否则会出现如下错误:edu.yale.its.tp.cas.client.CASAuthenticationException:Unable to validate ProxyTicketValidator。。。
导入过程分2步,第一步是导出证书,第二步是导入到证书信任库,命令如下:
keytool-export -trustcacerts -alias tomcat -file server.cer –keystore name.keystore-storepass password
keytool-import -trustcacerts -alias tomcat -file server.cer -keystore%JAVA_HOME%/jre/lib/security/cacerts -storepass password
keytool-import -trustcacerts -alias tomcat -file server.cer -keystore F:\cacerts-storepass password
如果有提示,输入Y就可以了。
其他有用keytool命令(列出信任证书库中所有已有证书,删除库中某个证书):
keytool-list -v -keystore D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts
keytool-delete -trustcacerts -alias tomcat -keystoreD:/sdks/jdk1.5.0_11/jre/lib/security/cacerts -storepass pass
3. 配置TOMCAT :
修改%TOMCAT_HOME%\conf\server.xml,以文字编辑器打开,查找这一行:
xml 代码
1.<Connectorprotocol="org.apache.coyote.http11.Http11NioProtocol"
2. port="8443" minSpareThreads="5"maxSpareThreads="75"
3. enableLookups="true"disableUploadTimeout="true"
4. acceptCount="100" maxThreads="200"
5. scheme="https" secure="true"SSLEnabled="true"
6. clientAuth="false" sslProtocol="TLS"
7. keystoreFile="D:/tools/apache-tomcat-6.0.10/server.keystore"
8. keystorePass=" password "/>
二.现在我来回答为什么那个奇怪的现象吧
原因是因为,实施人员在安装TOMCAT过程中,直接默认选择了JRE路径,导致无法找到密钥。
这个问题原因是黄老板(公司一位人才)发现的。
后来在TOMCAT CONFIGURE中重新选择了路径,指向了JDK路径。
在配置一次就成功了。