本文介绍了CentOS系统下Tomcat 8.5或9部署SSL证书的具体操作。
环境准备
- 操作系统:CentOS 7.6 64位
- Web服务器:Tomcat 8.5或9
说明 Tomcat服务器需要提前安装JDK环境变量,请前往Tomcat官网查看推荐的JDK兼容配置。
前提条件
- 已从阿里云数字证书管理服务控制台下载Tomcat服务器证书(包含PFX格式证书文件和TXT格式密码文件)。关于下载证书的具体操作,请参见下载SSL证书到本地。
- 您申请SSL证书时绑定的域名已完成DNS解析,即实现域名与Tomcat服务器的IP地址相互映射。
您可以在Tomcat服务器执行ping <yourdomainName>命令,如果正确返回了服务器的IP地址,说明已完成解析。
操作步骤
- 解压已下载的Tomcat证书。说明 每次下载证书都会产生新的密码,该密码仅匹配本次下载的证书。需要更新证书文件时,需同步更新匹配的密码。
- 将解压后的证书和密码文件拷贝到Tomcat的conf目录下。如果需要安装JKS格式证书,可使用以下命令将PFX格式证书转化成JKS格式。
keytool -importkeystore -srckeystore domain_name.pfx -destkeystore domain_name.jks -srcstoretype PKCS12 -deststoretype JKS
- 打开Tomcat/conf/server.xml,在server.xml文件中找到以下参数并进行修改。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> #找到以上参数,去掉<!- - 和 - ->这对注释符并修改为如下参数,对HTTPS默认端口进行配置: <Connector port="80" protocol="HTTP/1.1" #将Connector port修改为80。 connectionTimeout="20000" redirectPort="443" /> #将redirectPort修改为SSL默认端口443,让HTTPS请求转发到443端口。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="cert/keystore.pfx" certificateKeystorePassword="XXXXXXX" certificateKeystoreType="PKCS12" /> #找到以上参数,去掉<!- - 和 - ->这对注释符并修改为如下参数: <Connector port="443" #将Tomcat中默认的HTTPS端口Connector port 8443修改为443。8443端口不可通过域名直接访问、需要在域名后加上端口号;443端口是HTTPS的默认端口,可通过域名直接访问,无需在域名后加端口号。 protocol="org.apache.coyote.http11.Http11NioProtocol" #server.xml文件中Connector port有两种运行模式(NIO和APR),请选择NIO模式(也就是protocol="org.apache.coyote.http11.Http11NioProtocol")这一段进行配置。 maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="/usr/local/tomcat/cert/证书域名.pfx" #此处certificateKeystoreFile代表证书文件的路径,请用您证书的路径+文件名替换证书域名.pfx,例如:certificateKeystoreFile="/usr/local/tomcat/cert/example.com.pfx" certificateKeystorePassword="证书密码" #此处certificateKeystorePassword为SSL证书的密码,请用您证书密码文件pfx-password.txt中的密码替换,例如:certificateKeystorePassword="bMNML1Df" certificateKeystoreType="PKCS12" /> #证书类型为PFX格式时,certificateKeystoreType修改为PKCS12。 </SSLHostConfig> </Connector>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #找到以上参数,去掉<!- - 和 - ->这对注释符并修改为如下参数: <Connector port="8009" protocol="AJP/1.3" redirectPort="443" /> #将redirectPort修改为443,让HTTPS请求转发到443端口。
- 保存server.xml文件配置。
- 可选:在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>
- 执行
./shutdown.sh
和./startup.sh
命令重启Tomcat服务。
后续操作
Tomcat服务重启成功后,您可在浏览器中输入您SSL证书绑定的域名https://<YourDomainName>验证证书安装结果。浏览器地址栏显示小锁标识说明证书安装成功。