Apache全站HTTPS需完整配置:启用mod_ssl并正确设置证书路径;强制80端口301跳转至443,启用HSTS头;禁用弱协议与密码套件,开启OCSP装订;结合Certbot自动化轮换与重载。

Apache通过mod_ssl实现全站加密,核心是确保所有HTTP流量强制跳转到HTTPS,并使用现代TLS配置保障通信安全。关键不在“装上SSL”,而在配置的完整性、健壮性和持续可维护性。
启用mod_ssl并加载基础证书
确认mod_ssl已启用(通常在/etc/httpd/conf.modules.d/00-ssl.conf或a2enmod ssl),然后在主配置或虚拟主机中指定证书路径:
- SSLCertificateFile 指向你的域名证书(如fullchain.pem,含域名证书+中间CA)
- SSLCertificateKeyFile 指向私钥(权限应为600,属主root)
- 不推荐单独用SSLCertificateChainFile——现代做法是把中间证书合并进fullchain.pem
强制全站HTTPS与HSTS头加固
仅监听443端口不够,必须关闭80端口明文访问,并做301重定向:
- 在:80虚拟主机中用Redirect permanent / https://yourdomain.com/
- 在:443虚拟主机中启用HSTS:Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
- HSTS生效前建议先用max-age=300测试,确认无混合内容问题再延长
禁用弱协议与不安全密码套件
默认SSL配置往往兼容老旧客户端,需主动收紧:
立即学习“Java免费学习笔记(深入)”;
- 禁用SSLv2/v3、TLSv1.0/1.1:SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
- 只保留强密码套件:SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
- 开启OCSP装订:SSLUseStapling on,提升证书状态验证效率
定期轮换与自动化运维准备
证书过期是常见故障源,应从设计阶段规避人工干预:
- 使用Certbot时,配合--deploy-hook自动重载Apache(如systemctl reload apache2)
- 将证书路径统一放在/etc/letsencrypt/live/yourdomain.com/下,避免硬编码路径
- 添加cron任务每周检查证书剩余天数:openssl x509 -in cert.pem -checkend 86400 -noout

















