第一步,生成.keystore文件
%JAVA_HOME%keytool -genkey -alias tomcat -keyalg RSA -keystore my.keystore
第二步,修改tomcat的server.xml文件
把生成的tomcat.keystore文件复制到tomcat的conf文件夹下,和server.xml文件同路径,
<Connector
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="./conf/ mytomcat.keystore" keystorePass="123qew"
clientAuth="false" sslProtocol="TLS"/>
其中123qwe是生成my.keystore时设置的密码,如果只想用https访问,需要注释原来的8080窗口监听
<!--Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" / -->
最近在使用时发现,同样的配置【配置如下】:
<Connector port="8080" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="./conf/tomcat.keystore" keystorePass="123qwe"/>
在tomcat-7.0.27下正常,在tomcat-7.0.23下不正常,最终解决方法是
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="./conf/tomcat.keystore" keystorePass="123qwe"/>
这里介绍APR的原因是,Connector的配置与是否支持APR有着微妙的关系,如下的Connector配置在支持APR的情况下就会出错哦!
因为tomcat-6,tomcat-7.0.23中的配置使Connector实例加载org.apache.coyote.http11.Http11AprProtocol协议处理器,而Http11AprProtocol没有keystoreFile属性,所以在启动时会报错!因此,这里推荐的Connector配置:protocol="org.apache.coyote.http11.Http11Protocol" 或者protocol="org.apache.coyote.http11.Http11AprProtocol" 即可。