Tomcat 配置 HTTPS 访问全攻略(CentOS 环境)
一、环境说明
- 操作系统:CentOS
- Tomcat 版本:Apache Tomcat/9.0.105
- 服务器 IP:192.168.1.35
- 目标:将 Tomcat 默认的 HTTP 访问升级为 HTTPS,提升通信安全性
二、操作步骤详解
(一)查询 JDK 目录
通过以下命令确认 JDK 安装路径:
bash
echo $JAVA_HOME
预期输出:
bash
/opt/jdk1.8.0_451
关键点:后续操作需依赖 JDK 自带的keytool工具,确保路径正确。
(二)使用 keytool 生成证书
1. 进入 JDK 的 bin 目录
bash
cd $JAVA_HOME/bin
2. 执行证书生成命令
bash
./keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat.keystore -validity 36500
3. 交互配置说明
- 密钥库口令:设置证书存储密码(如:123456)
- 个人信息:依次输入姓名、组织单位、组织名称、地区等(示例:CN=chen, OU=LG, O=LG, L=guangdong, ST=guangdong, C=CN)
- 密钥口令:可与密钥库口令保持一致,直接按回车
4. 参数解析
- -keystore:指定证书存储路径及文件名(本例存放在/usr/local/目录,文件名为tomcat.keystore)
- -validity:证书有效期(36500 天≈100 年,默认 90 天)
(三)配置 Tomcat 服务器
1. 修改 conf/server.xml
原 HTTP 连接器配置(修改前):
bash
<Connector port="8800" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
修改点:
- 将redirectPort从 8443 改为 443(HTTPS 默认端口)
新增 HTTPS 连接器配置:
bash
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/usr/local/tomcat.keystore"
keystorePass="123456"/>
注意事项:
- protocol必须使用Http11NioProtocol,不可用HTTP/1.1
- keystoreFile路径需与实际证书存储路径一致(Linux 系统注意路径大小写)
2. 配置 conf/web.xml 安全约束
在</welcome-file-list>标签后添加以下内容:
bash
<login-config>
<!-- 客户端证书认证 -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- 保护所有Web资源 -->
<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>
配置意义:
- CLIENT-CERT 认证:要求客户端提供有效证书方可访问
- CONFIDENTIAL 传输:确保所有数据通过 SSL/TLS 加密传输,防止窃听
(四)重启 Tomcat 服务
# 停止服务
bash
./shutdown.sh
# 启动服务
bash
./startup.sh
三、访问验证与常见问题
(一)浏览器访问测试
- 访问地址 :https://192.168.1.35:443
- 预期结果:
- 首次访问可能出现安全警告(因使用自签名证书)
- 点击 "高级"→"继续访问" 可进入 Tomcat 欢迎页面
(二)证书信息查看
- 证书主题信息:
- 颁发者:自签名(CN=chen, OU=LG, O=LG, L=guangdong, ST=guangdong, C=CN)
- 有效期:从当前时间起 100 年
- 公钥信息:RSA 算法,2048 位密钥长度
(三)安全警告处理
- 原因:自签名证书未经过 CA 机构认证
- 解决方案:
- 生成证书请求(CSR)并提交给正规 CA 机构申请证书
- 使用keytool -importkeystore命令将证书转换为 PKCS12 格式(参考生成证书时的警告提示)
四、总结
通过以上步骤,成功在 CentOS 环境下为 Tomcat 9 配置了 HTTPS 访问。核心要点包括:
- 使用keytool生成自签名证书并正确配置路径
- 在server.xml中添加 HTTPS 连接器并指定证书信息
- 通过web.xml强制要求加密传输和客户端证书认证
生产环境中建议替换为 CA 签名证书以消除浏览器警告,进一步提升安全性。如需进一步优化性能,可考虑启用 TLSv1.2 + 协议并配置加密套件策略。
参考资料: