Tomcat开启https

d2xy 10年前

为了防止包监听,Https属于必须品,现在Web服务器基本上都有直接支持https的功能,这里记录一下在tomcat里面怎么开启https。

1. 生成Keystore (使用tomcat作为别名,RSA算法)

Windows:

%Tomcat_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

Unix:

$Tomcat_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
按照提示输入密码,公司等等一系列的信息,自动生成keystore存于用户根目录(${user.home}/.keystore),可以通过-keystore指定文件存储路径。

证书生成之后使用list命令查看证书内容

$Tomcat_HOME/bin>keytool -list


Note:系统中更常用的是使用openssl生成证书。

2. 在$Tomcat\conf\server.xml中修改tomcat connector,开始https connector,端口改成ssl的默认端口443,加入keystoreFile位置和keystore刚刚设置的密码。

<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->  <Connector             protocol="HTTP/1.1"             port="443" maxThreads="200"             scheme="https" secure="true" SSLEnabled="true"             keystoreFile="${user.home}/.keystore" keystorePass="********"             clientAuth="false" sslProtocol="TLS"/>

Note:因为大部分人都习惯输入http地址,为了友好,可以直接把http connector直接redirect到ssl的connector上面,只要简单的加入端口重定向(redirectPort="443")就可以了。

3. 重启tomcat

大功告成,重启tomcat之后的访问都必须走https,不用担心被轻易偷包了,当然这种https认证由于是自己生成的,没有经过认证,会被浏览器警告,要生成认证证书,那就是另外一个故事了。

Note:Tomcat也支持修改web.xml的security-constraint来保证所有的访问是通过https。