apache虚拟主机配置ssl需先启用mod_ssl模块并监听443端口,再于中同步配置sslprotocol all -sslv2 -sslv3 -tlsv1 -tlsv1.1、强加密套件及sslhonorcipherorder on,最后验证证书路径权限与协议禁用实效。

Apache 虚拟主机配置 SSL 模块并禁用不安全协议,关键在于两步同步完成:一是让 HTTPS 流量能正常进入并解密,二是确保只允许现代、强健的协议和加密套件。不能只开 SSL,也不能只写禁用语句却不验证是否生效。
启用 SSL 模块并确认基础就绪
模块没加载,后续所有配置都无效。先检查并启用:
- Debian/Ubuntu 执行:
sudo a2enmod ssl && sudo systemctl restart apache2 - CentOS/RHEL 检查
/etc/httpd/conf.modules.d/00-ssl.conf是否启用,或运行sudo yum install mod_ssl -y - 验证是否加载:
apache2ctl -M | grep ssl(Ubuntu)或httpd -M | grep ssl(RHEL),输出含ssl_module (shared)即成功 - 确认监听 443 端口已声明:
grep "Listen 443" /etc/apache2/ports.conf或/etc/httpd/conf/httpd.conf,缺失则手动添加 - 防火墙放行:
sudo ufw allow 443(Ubuntu)或sudo firewall-cmd --permanent --add-port=443/tcp && firewall-cmd --reload(RHEL)
在虚拟主机中配置 SSL 并精准禁用旧协议
禁用必须写在具体站点的 <virtualhost></virtualhost> 块内,才能作用于该域名,不影响其他站点:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 使用显式排除语法(兼容性好、推荐):
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 - 如环境支持 TLSv1.3(Apache ≥2.4.37 + OpenSSL ≥1.1.1),可更明确地启用:
SSLProtocol +TLSv1.2 +TLSv1.3 - 仅禁协议不够,必须配套限制密码套件:
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 - 强制服务端优先级生效:
SSLHonorCipherOrder on - 可选加固:
SSLCompression off(防 CRIME 攻击)
证书路径与权限必须严格正确
路径错、权限松,Apache 启动会失败或拒绝加载证书:
- 推荐存放位置:
证书文件(example.com.crt)→/etc/ssl/certs/
私钥文件(example.com.key)→/etc/ssl/private/
中间链(chain.crt)→/etc/ssl/certs/ - 权限设置(不可省略):
sudo chmod 600 /etc/ssl/private/example.com.keysudo chmod 644 /etc/ssl/certs/example.com.crt /etc/ssl/certs/chain.crt - 配置中三行必须完整且路径一致:
SSLCertificateFile /etc/ssl/certs/example.com.crtSSLCertificateKeyFile /etc/ssl/private/example.com.keySSLCertificateChainFile /etc/ssl/certs/chain.crt
验证禁用是否真正生效
重启 Apache 后,不能只看页面能否打开,要实测协议是否被拒绝:
- 命令行快速检测:
openssl s_client -connect yourdomain.com:443 -tls1_1→ 应返回握手失败或 “no protocols available”openssl s_client -connect yourdomain.com:443 -tls1_2→ 应成功并显示Protocol : TLSv1.2 - 在线权威检测:访问 SSL Labs Server Test,查看 “Handshake Simulation” 表格中 TLSv1.1 列是否全为 “No”
- 检查错误日志:
tail -f /var/log/apache2/error.log或/var/log/httpd/error_log,启动时若有语法或路径错误会直接报出










