apache部署https的核心是建立ssl/tls加密通道,需完成证书准备、启用mod_ssl模块、配置443端口虚拟主机、加固tls策略(禁用弱协议/设置强密套件/启用hsts)及防火墙放行443端口并重启服务。
apache 中部署 https,核心是建立一条由 ssl/tls 协议保障的安全加密传输通道。这不只是加个证书那么简单,而是要完成证书准备、模块启用、虚拟主机配置、加密策略设定和防火墙放行五个关键环节。
安装并启用 mod_ssl 模块
Apache 默认不启用 HTTPS 支持,必须加载 SSL/TLS 模块:
- CentOS/RHEL 系统执行:yum install -y mod_ssl openssl
- Debian/Ubuntu 系统执行:apt install -y ssl-cert apache2-utils
- 安装后会自动生成默认配置文件(如 /etc/httpd/conf.d/ssl.conf 或 /etc/apache2/mods-enabled/ssl.load)
- 确认模块已加载:apachectl -M | grep ssl,应看到 ssl_module (shared)
准备有效的 SSL 证书与私钥
证书是建立可信加密通道的前提。生产环境推荐使用 Let’s Encrypt 免费证书;测试可先用自签名证书:
- 生成私钥:openssl genrsa -out example.com.key 2048
- 生成 CSR(用于申请正式证书):openssl req -new -key example.com.key -out example.com.csr(注意填写正确的 Common Name,即域名)
- 若用自签名证书(仅限测试):openssl x509 -req -days 365 -in example.com.csr -signkey example.com.key -out example.com.crt
- Let’s Encrypt 用户直接运行:certbot --apache -d example.com,会自动完成申请、部署与续期配置
配置 HTTPS 虚拟主机
在 Apache 配置中明确声明一个监听 443 端口的 <virtualhost></virtualhost> 块,并启用加密能力:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 启用 SSL 引擎:SSLEngine on
- 指定证书文件:SSLCertificateFile /path/to/example.com.crt
- 指定私钥文件:SSLCertificateKeyFile /path/to/example.com.key
- 若使用第三方 CA(如 Let’s Encrypt),还需链式证书:SSLCertificateChainFile /path/to/chain.pem(或合并进 crt 文件)
- 建议强制跳转 HTTP 到 HTTPS,在对应 HTTP 虚拟主机中添加:Redirect permanent / https://example.com/
加固 TLS 加密策略
仅启用 HTTPS 不代表足够安全,还需限制弱协议和低强度加密套件:
- 禁用不安全协议:SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1(推荐仅保留 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
- 启用 HSTS(HTTP 严格传输安全)头,防止降级攻击:Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
- 确保 mod_headers 已启用,否则 Header 指令无效
开放端口并重启服务
最后让外部能真正访问到 HTTPS 服务:
- 防火墙放行 443 端口:CentOS 执行 firewall-cmd --permanent --add-port=443/tcp && firewall-cmd --reload;Ubuntu 使用 ufw allow 443
- 检查 Apache 配置语法:apachectl configtest(必须显示 Syntax OK)
- 重启服务:systemctl restart httpd(RHEL)或 systemctl restart apache2(Debian)
- 验证监听状态:ss -tlnp | grep :443,应看到 httpd/apache2 进程监听 443










