因为有人问起, 特地研究了一下在 Tomcat 4 上的配置, 发现存在如下差异:
说明: 本文所使用的例子可以在这里下载(使用右键菜单"目标另存为...")
下面具体说说设置步骤:
- server.xml 中配置 8443 端口的 Connector 写法上存在差异, 而且 Tomcat 4 不支持在 server.xml 中直接设置 trustStore, 必须通过 CATALINA_OPTS 环境变量设置进去;
- web.xml 必须使用 Servlet 2.3 定义的格式( http://java.sun.com/dtd/web-app_2_3.dtd ), 而且对其中元素的出现顺序规定比较严格.
说明: 本文所使用的例子可以在这里下载(使用右键菜单"目标另存为...")
下面具体说说设置步骤:
第一步: 将服务器端证书 ssl-test.net-tomcat.keystore 复制到 Tomcat 的 conf 目录中
- 这个与在 Tomcat 5 下面配置是一样的, 参见 Tomcat5SSL_ServerAndClient 在 Tomcat 5.5 上的配置实例 ;
第二步: 修改 Tomcat 的 conf 目录下 server.xml 文件, 加上 SSL Connector 的定义
- 注意这里不支持 ${catalina.home} 这个变量, 不过可以使用相对路径(相对于 catalina.home).
第三步: 将 Web 应用 "ssltest" 复制到 Tomcat 的 webapps 目录下, 编辑 ssltest 目录下 WEB-INF/web.xml, 配置 ssltest/ssl/ 目录下的内容为必须通过 SSL 方式才能访问
- 其实这里的 web.xml 内容与在 Tomcat 5 中使用的一样, 只是这里是使用 DTD 来定义的.
第四步: 设置相关环境变量, 然后再启动 Tomcat
set TOMCAT_HOME=C:\TEMP\ssl\jakarta-tomcat-4.1.31
set CATALINA_OPTS=-Djavax.net.ssl.trustStore=%TOMCAT_HOME%/conf/ssl-test.net-tomcat.keystore
-Djavax.net.ssl.trustStorePassword=openssl
-Djavax.net.debug=ssl
(注意: set CATALINA_OPTS=... 是在一行上的, 只是为了排版才分为几行的.)
- 注意这里 CATALINA_OPTS 中最后的
-Djavax.net.debug=ssl
并不是必需的, 加上它的目的只是为了能够打印出 SSL 相关的调试信息.
其它内容
- 其它内容与在 Tomcat 5 下面配置是一样的, 参见 Tomcat5SSL_ServerAndClient 在 Tomcat 5.5 上的配置实例 ;
相关下载
- 本文所涉及的文件可以在下列地址下载:
参考资料
- 本文主要参考了 Tadek’s Blog( http://tadek.pietraszek.org/blog/ ) 中的 "Tomcat4 - client authentication"