多语言https站点应证书物理隔离、tls策略逻辑复用、重定向与hsts全局生效:各子域使用独立证书路径,安全指令统一提取至共享配置文件并include引入,http跳转和hsts需覆盖全部语言入口,let’s encrypt续期须包含所有子域并自动校验。

多语言站点通常对应多个子域名(如 zh.example.com、en.example.com)或路径前缀(如 example.com/zh/),但 HTTPS 安全策略应统一管控,不能因语言差异而降低安全水位。核心思路是:**证书物理隔离 + TLS 策略逻辑复用 + 重定向与 HSTS 全局生效**。
按语言域名拆分证书,但不拆分安全策略
每个语言子域必须使用独立的证书文件(哪怕共用通配符证书,路径也要明确区分),避免混用导致 SNI 匹配失败或证书警告:
-
✅ 正确做法:为
zh.example.com放置/etc/letsencrypt/live/zh.example.com/fullchain.pem和privkey.pem;为en.example.com单独申请并存放对应证书 -
❌ 错误做法:所有子域共用同一组证书路径,或在不同
<virtualhost></virtualhost>中硬编码相同证书路径 - 若使用通配符证书(
*.example.com),可统一部署到各子域,但仍需在每个虚拟主机中显式指定其路径,不可依赖全局设置
把 TLS 策略抽成公共配置块
SSLProtocol、SSLCipherSuite、SSLHonorCipherOrder、SSLCompression、HSTS 等指令,**绝不重复写进每个语言站点的 VirtualHost 块里**。统一提取到一个共享文件中:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 创建
/etc/apache2/global-https-security.conf,内容例如:
SSLProtocol TLSv1.2 TLSv1.3 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384 SSLHonorCipherOrder on SSLCompression off Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
- 在每个语言子域的 HTTPS
<virtualhost></virtualhost>中加入:Include /etc/apache2/global-https-security.conf - 这样新增语言站点时,只需复制虚拟主机结构 + 指定证书路径 + 引入该文件,无需再逐条核对加密套件是否一致
HTTP 跳转和 HSTS 必须覆盖全部语言入口
用户可能直接访问 http://zh.example.com 或 http://en.example.com,跳转逻辑不能只配主站:
- 为每个语言子域单独配置一个
<virtualhost></virtualhost>,仅做 301 重定向:
<virtualhost> ServerName zh.example.com Redirect permanent / https://zh.example.com/ </virtualhost><virtualhost> ServerName en.example.com Redirect permanent / https://en.example.com/ </virtualhost>
- HSTS 的
includeSubDomains已确保所有子域继承策略;若用路径前缀(如/zh/),则必须在主 HTTPS 站点中启用,并确认反向代理或应用层未覆盖该响应头
自动化更新与校验要适配多语言场景
Let’s Encrypt 证书续期时,需确保所有子域都被包含,且 deploy-hook 能同步刷新全部配置:
- Certbot 命令示例(含全部语言子域):
certbot certonly --standalone -d example.com -d www.example.com \ -d zh.example.com -d en.example.com -d ja.example.com \ --deploy-hook "apache2ctl configtest && systemctl reload apache2"
- 验证时,用
openssl s_client -connect zh.example.com:443 -tls1_2和sslabs.com分别测试各子域,确认协议、套件、HSTS 均生效










