端到端https加密需apache与tomcat均启用https:apache配置sslproxyengine on及proxypass https://,tomcat配置sslenabled="true"的connector,并确保证书链可信。

Apache 作为反向代理,搭配 Tomcat 实现端到端 HTTPS 加密,关键在于两层 SSL:客户端 ⇄ Apache(前端加密),Apache ⇄ Tomcat(后端也加密)。这要求 Apache 启用代理级 SSL,并将请求以 HTTPS 方式转发给 Tomcat,而非 HTTP。
Apache 端配置:启用 SSL 代理并指向 Tomcat 的 HTTPS 地址
在 Apache 的 ssl.conf 或虚拟主机配置中,必须包含以下核心指令:
-
SSLEngine on—— 启用本机 SSL 终结 -
SSLProxyEngine on—— 必须开启,否则无法建立上游 HTTPS 连接 -
SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile—— 配置有效的域名证书(推荐使用 fullchain.pem 格式) -
ProxyPass / https://192.168.1.10:8443/—— 目标必须是 https:// 开头,端口为 Tomcat 的 HTTPS 监听端(如 8443) -
ProxyPreserveHost On—— 保留原始 Host 头,确保 Tomcat 日志和重定向正确
Tomcat 端配置:自身启用 HTTPS Connector
Tomcat 不能只监听 HTTP,必须独立配置一个支持 TLS 的 Connector。编辑 $CATALINA_HOME/conf/server.xml,添加或启用如下片段:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxthreads="200" sslenabled="true" scheme="https" secure="true" keystorefile="/path/to/keystore.jks" keystorepass="changeit" keyalias="tomcat" clientauth="false" sslprotocol="TLS"></connector>
注意:
– keystoreFile 指向含私钥+证书的 JKS 或 PKCS12 文件(可由 OpenSSL 或 keytool 生成)
– 若使用国密算法(如 SM2/SM4),需额外集成 GMSSL 提供者及对应 JAR 包
– 不建议关闭证书校验(如 clientAuth="false" 已足够;生产环境切勿设为 required 除非真做双向认证)
证书信任处理(仅测试环境临时绕过)
若 Tomcat 使用自签名证书或内部 CA 签发的证书,Apache 默认会拒绝连接。此时可在 Apache 配置中加入(仅限测试):
SSLProxyVerify noneSSLProxyCheckPeerCN offSSLProxyCheckPeerName off
生产环境应将 Tomcat 的证书链导入 Apache 的信任库(如通过 SSLProxyCACertificateFile 指定 PEM 格式根+中间证书),确保全链可信验证。
验证与调试要点
完成配置后,重点确认三点:
- Apache 能正常启动且
openssl s_client -connect yourdomain.com:443返回有效证书 - Tomcat 的 8443 端口可通过
curl -k https://192.168.1.10:8443访问(-k 绕过本地校验) - 从客户端访问 Apache 域名时,浏览器地址栏显示锁图标,且抓包看不到明文请求体
- 检查 Apache error_log 中是否出现
SSL Proxy: peer certificate not verified类报错










