tomcat7下对HTTPS的部署配置

Posted DearBelinda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat7下对HTTPS的部署配置相关的知识,希望对你有一定的参考价值。

1、申请CA证书,可以在腾讯云或者阿里云申请到免费的CA,不过前提是,你要有太服务器和域名,并且解析过域名。

2、下载申请到的CA证书到本地,在tomcat7上进行相关配置。

3、Tomcat 证书部署

3.1 获取证书

如果申请证书时有填写私钥密码,下载可获得Tomcat文件夹,其中有密钥库 www.domain.com.jks;
如果没有填写私钥密码,不提供Tomcat证书文件的下载,需要用户手动转换格式生成。

可以通过 nginx 文件夹内证书文件和私钥文件生成jks格式证书
转换工具:https://www.trustasia.com/tools/cert-converter.htm
使用工具时注意填写 密钥库密码 ,安装证书时配置文件中需要填写。

3.2 证书安装

配置SSL连接器,将www.domain.com.jks文件存放到conf目录下,然后配置同目录下的server.xml文件:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="conf\\www.domain.com.jks"
    keystorePass="changeit"
    clientAuth="false" sslProtocol="TLS" />

注:

配置文件参数说明
clientAuth 如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证
keystoreFile 指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<catalina_home> (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为 “.keystore”的文件。
keystorePass 密钥库密码,指定keystore的密码。(如果申请证书时有填写私钥密码,密钥库密码即私钥密码)
sslProtocol 指定套接字(Socket)使用的加密/解密协议,默认值为TLS

3.3 http自动跳转https的安全配置

到conf目录下的web.xml。在</welcome-file-list>后面,</web-app>,也就是倒数第二段里,加上这样一段

<security-constraint><web-resource-collection >
    <web-resource-name >SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint></security-constraint>

这步目的是让非ssl的connector跳转到ssl的connector去。所以还需要前往server.xml进行配置:

<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="443" />

redirectPort改成ssl的connector的端口443,重启后便会生效。

4、由于tomcat对ssl的实现由两种方式,tomcat7默认实现是APR方式,所以这里我们要对server.xml再进行相关修改。

5、结果展示

 

以上是关于tomcat7下对HTTPS的部署配置的主要内容,如果未能解决你的问题,请参考以下文章

maven tomcat7 远程热部署

tomcat7+jdk的keytool生成证书 配置https

tomcat7 项目部署

怎么在windows server 部署tomcat7

eclipse maven tomcat7 热部署

Maven Tomcat7自动部署