最主流、最可靠的方式是 let’s encrypt + certbot:先确保域名解析、443端口开放、apache运行且mod_ssl启用、系统时间准确;再执行sudo certbot --apache -d example.com -d www.example.com --redirect一键部署;最后核对证书路径、禁用老旧ssl协议、设置私钥600权限、运行apachectl configtest验证语法,并配置certbot renew定时续期。

Apache 上配置 HTTPS,用免费 SSL 证书最主流、最可靠的方式是通过 Let’s Encrypt + Certbot 实现。整个过程自动化程度高,但关键步骤不能跳过,否则容易卡在“证书生成了却打不开 HTTPS”或“重启 Apache 报错”上。
确认基础环境是否就绪
在申请前,先确保服务器满足几个硬性条件:
- 域名已正确解析到该服务器 IP(A 记录或 CNAME),且能通过 HTTP 正常访问(Certbot 文件验证依赖这点)
- 443 端口已在防火墙和云服务器安全组中放行
- Apache 已安装并运行,且 mod_ssl 模块已启用:执行
httpd -M | grep ssl或apache2ctl -M | grep ssl,看到ssl_module (shared)才算成功 - 系统时间准确(Let’s Encrypt 对时间敏感,偏差超过 5 分钟会导致验证失败)
用 Certbot 一键申请并部署
推荐使用官方 Certbot 工具,它会自动申请证书、修改 Apache 配置、启用 HTTPS,并可选设置 HTTP 自动跳转:
- 安装 Certbot(以 CentOS/RHEL 为例):
sudo yum install -y certbot python3-certbot-apache - 直接运行部署命令(替换
example.com和www.example.com为你的域名):sudo certbot --apache -d example.com -d www.example.com --redirect - 过程中会提示输入邮箱(用于到期提醒)、是否同意协议,最后选择是否开启自动跳转(选 2 即强制 HTTPS)
- 成功后,Certbot 会自动更新 Apache 的虚拟主机配置,添加
SSLEngine on、证书路径、协议限制等关键项
手动检查与补漏要点
Certbot 虽自动,但以下几处仍需人工核对,尤其当配置分散或有自定义结构时:
-
证书路径是否真实存在:默认存于
/etc/letsencrypt/live/example.com/,内含fullchain.pem(证书链)和privkey.pem(私钥),Apache 配置中引用的路径必须完全匹配 -
SSL 协议是否禁用老旧版本:在虚拟主机或
ssl.conf中加入:SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -
私钥权限是否严格:运行
sudo chmod 600 /etc/letsencrypt/live/example.com/privkey.pem,避免 Apache 启动时报权限错误 -
配置语法是否有效:执行
sudo apachectl configtest,显示Syntax OK才可重启
续期与维护
Let’s Encrypt 证书有效期仅 90 天,必须定期续期:
- 手动测试续期:
sudo certbot renew --dry-run - 生产环境建议加定时任务(如每天凌晨 2:15):
15 2 * * * /usr/bin/certbot renew --deploy-hook "/usr/bin/systemctl reload httpd" -
注意:不要用
certbot renew默认的 standalone 模式(会抢 443 端口),务必搭配--deploy-hook在续期完成后重载 Apache,而非重启











