Tomcat的SSL配置keytool生成证书

Tomcat的SSL配置
前提是:保证JDK的环境变量配置正确,能够在任何文件夹下使用java命令
1. 生成 server key
以命令行方式切换到目录tomcat所在的根目录下,在command命令行输入如下命令(jdk1.4以上带的工具):
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600
keytool –genkey” 将自动使用默认的算法生成公钥和私钥
-alias [名称] 给证书取个别名
-keyalg 指定密钥的算法,如果需要指定密钥的长度,可以再加上keysize参数。密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍
-keystore 参数可以指定密钥库的名称。密钥库其实是存放密钥和证书的文件,密钥库对应的文件如果不存在自动创建。
-validity 证书的有效日期,默认是90天
-keypass changeit 不添加证书密码
-storepass changeit e 不添加存储证书问价的密码(证书要加密的话去掉后面的两项)
输入相关信息后 最后确认 便会在tomcat根目录下生成server.keystore 文件。

2. 将证书导入的JDK的证书信任库中:

导入过程分2步,第一步是导出证书,第二步是导入到证书信任库,命令如下:
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore server.keystore -storepass changeit
-file server.cer 证书文件所在的地址
-keystore 证书存储器所在的地址
-storepass keystore的密码

keytool -import -trustcacerts -alias tomcat -file server.cer -keystore cacerts -storepass changeit
如果有提示,输入Y就可以了。

这步对于Tomcat的SSL配置不是必须,但对于CAS SSO是必须的,否则会出现如下错误:edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator。。。
其他有用keytool命令(列出信任证书库中所有已有证书,删除库中某个证书):
keytool -list -keystore tomcat.keystore
删除证书
keytool -delete -trustcacerts -alias tomcat -keystore D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts -storepass changeit
3. 配置TOMCAT :
修改%TOMCAT_HOME%\conf\server.xml,以文字编辑器打开,查找这一行:
xml 代码
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
将之后的那段的注释去掉,并加上 keystorePass及keystoreFile属性。
注意,tomcat不同版本配置是不同的:
Tomcat4.1.34配置:
xml 代码
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8443"
enableLookups="true" scheme="https" secure="true" acceptCount="100"
useURIValidationHack="false" disableUploadTimeout="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="server.keystore" keystorePass="changeit"/>
Tomcat5.5.9配置:
xml 代码
<!-- Define a 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="server.keystore"
keystorePass="changeit"/>
Tomcat6.0配置
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="server.keystore" keystorePass="000000"
truststoreFile="server.keystore" truststorePass="000000"/>
4注意事项:

(1) 生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”

(2) 如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your first and last name?”不正确引起的

5、遗留问题:

(1)如果AC主机不能通过域名查找,必须使用IP,但是这个IP只有在配置后才能确定,这样证书就必须在AC确定IP地址后才能生成

(2)证书文件只能绑定一个IP地址,假设有10.1.25.250 和 192.168.1.250 两个IP地址,在证书生成文件时,如使用了10.1.25.250,通过IE就只能使用10.1.25.250 来访问AC-WEB,192.168.1.250是无法访问AC-WEB的。

tomcat https 该网站证书不受安全信任
这个说明你已经配置成功了, 弹出框是浏览器的设置问题,本机测试是不需要openssl生成ca认证的证书的!
你的RootCA未经过浏览器的默认安全设置; 所以会提示;
如果你的CA换做浏览器默认的可以接受的CA,比如:Verisign等.或者把该站点加入到可信任站点,都可以去掉该提示了.

猜你喜欢

转载自www.cnblogs.com/water-wjf/p/12941130.html