① 如果JDK版本低于1.3,请到http://java.sun.com/products/jsse/下载JSSE 1.0.3 (或者其他版本) ,下载后安装,安装完毕后设置环境变量JSSE_HOME为你JSSE的安装目录.1.4以上的JDK已经集成了JSSE,无须再设置.
② 转到JDK的BIN目录,执行下面的命令: keytool -genkey -alias tomcat -keyalg RSA -keystore H:\Websrever\Tomcat\conf\keystore 并且按照提示填写.
③ 找到Tomcat/conf/server.xml文件,并且将
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystorePass="设置证书时的密码" keystoreFile="H:\Websrever\Tomcat\conf\keystore">
clientAuth="false" sslProtocol="TLS" />
-- >
注释部分去掉.
④ 打开浏览器,敲入https://localhost:8843
⑤ 以上方法在 Windows Server 2003, Jdk1.4.2, Tomcat 4.0.3测试并通过。网上有人说在Windows XP上通过,可是我在XP上试验没有成功,启动Tomcat后访https://localhost:8843,Tomcat会报出如下错误:
在Server上一切正常。
---------------------------------------------
常用的配置属性:
clientAuth
如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。
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。