您可以通过将 SSL 证书安装到 Tomcat 服务器,使 Tomcat 服务器支持 HTTPS 安全访问。本文介绍如何在 Tomcat 服务器中安装 PFX 格式的 SSL 证书。
说明:
- 本文档 Tomcat 版本以
tomcat9.0.13为例。- 安装前请确认 443 端口未被占用;如果 443 端口已被使用,请在安装证书时绑定其他端口。
获取证书
PFX(PKCS#12)格式部署需要用到证书包中的三个文件:
domain_com.pfx:证书文件(含私钥)domain_com.key:私钥文件password.txt:证书密码文件
安装 SSL 证书
- 将已获取到的
domain_com.pfx证书文件从本地目录拷贝到 Tomcat 服务器的/usr/tomcat9.0.13/conf目录下。
说明: 不同版本的 Tomcat 路径名称会有些许区别,请前往您的服务对应的路径进行操作。
- 编辑
/usr/tomcat9.0.13/conf目录下的 server.xml 文件,添加一个 Connector 配置,内容如下:
<!-- keystoreFile:证书的路径 -->
<!-- keystorePass:请替换为 password.txt 密码文件中的内容 -->
<Connector port="443" protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/usr/tomcat9.0.13/conf/domain_com.pfx"
keystoreType="PKCS12"
keystorePass="证书密码"
clientAuth="false"
SSLProtocol="TLSv1.2+TLSv1.3"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"/>
说明:
- TLS 1.0 / 1.1 已被主流浏览器废弃,请勿配置在
SSLProtocol中,否则部分安全检测工具会给站点降级。ciphers仅对 TLS 1.2 连接生效(TLS 1.3 的套件由 JDK 自动协商);推荐使用 ECDHE + GCM 套件,避免使用TLS_RSA_WITH_*、RC4、3DES 等无前向安全或已淘汰的算法。如无特殊合规要求,也可删除ciphers行直接使用 JVM 默认值。
- 保存配置文件,在 bin 目录下执行以下命令,确认配置是否正确。
./configtest.sh
- 重启 Tomcat,在 bin 目录下执行以下命令:
./shutdown.sh # 关闭 Tomcat 服务器
./startup.sh # 启动 Tomcat 服务器
HTTP 自动跳转 HTTPS 的安全配置(可选)
如果您需要将 HTTP 请求自动重定向到 HTTPS,可以通过以下操作设置:
编辑
/usr/tomcat9.0.13/conf目录下的 web.xml 文件,找到</welcome-file-list>标签。在结束标签
</welcome-file-list>后面换行,并添加以下内容:
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<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>
- 编辑
/usr/tomcat9.0.13/conf目录下的 server.xml 文件,将 HTTP Connector 的 redirectPort 参数修改为 SSL Connector 的端口,即 443 端口。如下所示:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
- 保存配置文件,在 bin 目录下执行以下命令,确认配置是否正确。
./configtest.sh
- 如果配置没有问题,重启 Tomcat 服务器,即可使用域名访问,实现 HTTP 自动跳转 HTTPS。
./shutdown.sh # 关闭 Tomcat 服务器
./startup.sh # 启动 Tomcat 服务器