免费 SSL 证书配置指南:以 Let's Encrypt 与 Certbot 为例
一、核心前提:了解免费 SSL 证书与关键工具
免费 SSL 证书提供商:优先选择权威、合规的机构,其中Let's Encrypt是最主流的选择 —— 由互联网安全研究小组(ISRG)运营,支持自动签发、续期,证书兼容性覆盖 99% 以上的浏览器与操作系统,且完全免费,无使用时长限制(仅需每 90 天续期一次,可自动化完成)。
自动化工具 Certbot:Let's Encrypt 推荐使用 Certbot 工具,它能一键完成 “证书申请、香港香港服务器配置、自动续期” 全流程,支持 Apache、Nginx、IIS 等主流 Web 服务器,无需手动修改复杂配置,大幅降低操作门槛。
二、免费 SSL 证书配置步骤(以 Let's Encrypt+Certbot 为例)
步骤 1:选择并确认 SSL 证书提供商
步骤 2:准备服务器环境(关键前提)
已部署运行中的网站 / 应用:服务器上需有可访问的网站(如静态网页、动态应用),Certbot 需通过域名验证确认您对该域名的所有权。
已安装 Web 服务器:需提前安装并启动 Web 服务器,如 Nginx(推荐)、Apache、IIS,确保服务器正常监听 80 端口(HTTP 端口,Certbot 验证需用到)。
检查 Web 服务器状态:以 Nginx 为例,执行systemctl status nginx,确保状态为 “active (running)”;
若未安装,可通过命令快速安装(如 Ubuntu 系统安装 Nginx:sudo apt update && sudo apt install nginx)。
已配置域名并完成 DNS 解析:
拥有一个已备案的域名(如example.com,国内服务器需备案,境外服务器可无需备案);
在域名解析平台(如阿里云 DNS、腾讯云 DNS)将域名 A 记录指向服务器公网 IP,且解析已生效(可通过ping 域名测试,确保返回服务器 IP)。
开放服务器端口:确保服务器防火墙(如 UFW、firewalld)开放 80 端口(HTTP,用于 Certbot 域名验证)和 443 端口(HTTPS,用于后续 SSL 访问):
以 UFW 防火墙为例,执行命令:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp;
执行sudo ufw status确认端口已开放。
步骤 3:安装 Certbot 工具
场景 A:Linux 系统 + Nginx 服务器
Ubuntu/Debian 系统:
更新软件源:sudo apt update && sudo apt upgrade -y;
安装 Certbot 与 Nginx 插件:sudo apt install certbot python3-certbot-nginx -y(python3-certbot-nginx 是 Certbot 针对 Nginx 的专用插件,可自动配置服务器)。
CentOS/RHEL 系统:
安装 EPEL 仓库(提供 Certbot 包):sudo yum install epel-release -y;
安装 Certbot 与 Nginx 插件:sudo yum install certbot python3-certbot-nginx -y。
场景 B:Linux 系统 + Apache 服务器
Ubuntu/Debian 系统:sudo apt install certbot python3-certbot-apache -y;
CentOS/RHEL 系统:sudo yum install certbot python3-certbot-apache -y。
场景 C:Windows 系统 + IIS 服务器
步骤 4:通过 Certbot 获取并配置 SSL 证书
1. 执行证书申请命令
Nginx 服务器:sudo certbot --nginx;
Apache 服务器:sudo certbot --apache;
执行命令后,Certbot 会先检查服务器环境,然后进入交互式向导。
2. 跟随向导完成配置
输入电子邮箱:用于接收证书到期提醒、安全通知(如证书即将过期时的续期提醒),建议填写常用邮箱;
同意服务条款:输入A(Agree)同意 Let's Encrypt 的服务条款;
选择是否共享邮箱:输入N(No)或Y(Yes),选择是否将邮箱共享给 ISRG 合作机构,建议选N;
选择需配置证书的域名:Certbot 会自动检测服务器上已配置的域名(如example.com、www.example.com),按提示输入域名前的序号(如输入1选择example.com),或输入*选择所有域名,然后回车。
3. 自动配置 HTTPS 与跳转(关键一步)
选择后,Certbot 会自动修改 Web 香港香港服务器配置文件(如 Nginx 的/etc/nginx/sites-available/default),将所有 HTTP(80 端口)访问强制跳转至 HTTPS(443 端口),确保用户访问的始终是安全链接。
步骤 5:验证 SSL 证书是否生效
1. 浏览器访问测试
若地址栏显示 “小绿锁” 图标,鼠标悬停显示 “连接是安全的”,说明证书生效;
点击小绿锁→“证书”,可查看证书颁发机构(Let's Encrypt)、有效期(默认 90 天)等信息。
2. 使用在线 SSL 检测工具
操作:输入域名后点击检测,若评分达到 A 或 A+,说明 SSL 配置合规、安全等级高。
步骤 6:配置证书自动续期(无需手动操作)
自动续期原理:Certbot 安装时会自动创建定时任务(Cron Job 或 Systemd Timer),每天检查证书是否即将到期(通常到期前 30 天),若满足条件则自动续期,并重启 Web 服务器加载新证书。
手动验证自动续期功能:执行sudo certbot renew --dry-run,若显示 “Congratulations, all simulated renewals succeeded”,说明自动续期配置正常。
步骤 7:额外配置(可选,提升安全性)
启用 TLS 1.2/1.3,禁用旧协议:编辑 Web 服务器配置文件,禁用不安全的 TLS 1.0/1.1 协议(易受攻击),仅保留 TLS 1.2/1.3(现代浏览器均支持);
以 Nginx 为例,在配置文件的ssl_protocols字段添加:ssl_protocols TLSv1.2 TLSv1.3;;
配置强加密套件:选择安全性更高的加密算法,如ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";;
启用 HSTS:添加add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;,强制浏览器长期使用 HTTPS 访问,避免降级攻击。
步骤 8:日常监控与维护
关注证书到期提醒:Certbot 会在证书到期前通过邮箱发送提醒,若未收到提醒,可定期执行sudo certbot certificates查看所有证书的有效期;
监控 Web 服务器状态:确保 Web 服务器(如 Nginx)正常运行,若服务器重启,需确认 SSL 配置是否加载(可通过浏览器访问验证);
定期更新 Certbot:执行sudo apt upgrade certbot(Ubuntu)或sudo yum update certbot(CentOS),获取最新版本,修复潜在漏洞。
三、常见问题与解决方案
问题 1:Certbot 提示 “域名验证失败”
原因:DNS 解析未生效、80 端口被防火墙屏蔽、服务器未正常运行 Web 服务;
解决:检查域名解析是否指向正确 IP(可通过nslookup 域名测试),确保 80 端口开放,重启 Web 服务器后重新执行 Certbot 命令。
问题 2:浏览器显示 “证书无效”
原因:证书已过期、域名与证书绑定的域名不匹配(如证书绑定example.com,访问www.example.com);
解决:执行sudo certbot renew续期证书,若域名不匹配,重新执行certbot --nginx并选择正确的域名。
问题 3:自动续期失败
原因:定时任务被删除、服务器重启后未启动定时服务;
解决:Ubuntu 系统检查 Cron 任务(cat /etc/cron.d/certbot),CentOS 系统检查 Systemd Timer(systemctl status certbot.timer),确保定时服务正常运行。