相关的系统软件版本
本次配置服务器版本为centos7,tomcat版本为8.5.50,证书为阿里云SSL证书,可购买也可申请免费版。
tomcat的安装:
通过相关软件将tomcat上传到服务器的/usr(可随意)目录下,我这里使用的是WinScp,可通过以前的文章找下载方法。
上传完成后如图:

在/usr目录下多了一个apache-tomcat的文件:
使用命令:
tar -zxvf apache-tomcat-8.5.50.tar.gz //解压文件
解压后多了一个apache-tomcat-8.5.50的目录,但是名字太长操作不方便,使用命令修改文件夹名称:
mv apache-tomcat-8.5.50 tomcat8
修改完成后切换到tomcat目录,新建文件夹名为cert,用来存放证书文件,这里为了方便我们使用winscp,如图:

上传好证书文件后我们切换到/tomcat/conf目录,使用vim打开编辑文件server.xml(注意使用root用户,不然在命令前加sudo):
vim server.xml
在这里我们一共要改三处位置,为了方便我们在命令模式输入/443找到以下位置,在<Connector>标签中将原来的“8080”改为“80”,“8443”改为“443”,如图:
找到以上参数,去掉<!- - 和 - ->这对注释符并修改为如下参数,对HTTPS默认端口进行配置:
<Connector port="80" protocol="HTTP/1.1" #将Connector port修改为80。
connectionTimeout="20000"
redirectPort="443" /> #将redirectPort修改为SSL默认端口443,让HTTPS请求转发到443端口。
修改完成如下:

第二处找到以下参数:

去掉<!- - 和 - ->这对注释符并做如下修改:
#找到以上参数,去掉<!- - 和 - ->这对注释符并修改为如下参数:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/usr/tomcat/cert/证书域名.pfx"
certificateKeystorePassword="证书密码" #此处certificateKeystorePassword为SSL证书的密码,请用您证书密码文件pfx-password.txt中的密码替换
certificateKeystoreType="PKCS12" /> 。
</SSLHostConfig>
</Connector>
修改完成如图:

这里有两点需要注意:
1.证书文件路径要使用绝对路径:"/usr/tomcat8/cert/xxx.pfx"。
2.删除原来配置末尾的 type="RSA"。
否则会报端口占用异常,或文件配置未正常结束异常。
第三处找到文件中以下位置:

将8443改为443,然后按esc 输入:wq保存并退出,然后切换到/tomcat/bin目录。
输入命令启动tomcat:
./startup.sh

出现如下界面说明启动完成,但是不一定是真实的启动完成,切换到/tomcat/logs/目录下:
使用命令查看日志文件:
tail -f catalina.out
如果没有报错则说明启动成功,否则按照情况百度解决,直到以下界面说明启动成功:

或者通过命令查看进程中是否有tomcat服务,判断是否启动。
ps aux | grep tomcat
或
netstat -lnp | grep 80
启动成功后通地址 https://xxx.com成功访问:

这里有两个问题要说一下:
第一,你的服务器需要配置相应的域名解析服务,ping你的域名能返回你的ip地址,且对应的证书文件也是以域名为名字。
第二,如果你的配置和文件都没有问题,且tomcat启动也没有问题还是访问不了,说明你的服务器防火墙策略没有开启443端口,需要开启,可参照百度命令去开启。这里不做解释。
说一个可选操作,在web.xml文件最底部添加以下内容,实现HTTP自动跳转为HTTPS。
<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>
重启tomcat在访问完成http->https的自动跳转。
网友评论