免费SSL证书申请完整教程
一、前期准备条件
域名已经解析至服务器公网IP,国内域名提前完成备案。
服务器安全组与防火墙放行
80、443端口。准备可用邮箱,用来接收证书到期提醒。
免费证书选择:Let's‑Encrypt,有效期90天,支持自动续期,全部浏览器信任。
二、宝塔面板申请方式(新手首选)
登录宝塔后台,打开【网站】,找到对应域名,点击【设置】‑【SSL】。
证书提供商选择
Let's‑Encrypt,勾选example.com、www.example.com。验证方式选择:
80端口空闲:使用文件验证(HTTP‑01);
开启CDN:切换为DNS验证,去域名控制台添加TXT解析记录。
填写邮箱并同意协议,点击申请证书,等待1‑2分钟签发完毕。
开启【强制HTTPS(301重定向)】,保存配置,Nginx自动重载。
宝塔内置定时任务,到期前自动续期,无需人为干预。
证书文件路径
公钥(fullchain.pem):/www/server/nginx/conf/ssl/example.com/fullchain.pem 私钥(privkey.pem):/www/server/nginx/conf/ssl/example.com/privkey.pem
三、Linux命令行申请(无宝塔环境)
1. 安装certbot工具
# CentOS系统 yum install certbot python3‑certbot‑nginx -y # Ubuntu系统 apt update && apt install certbot python3‑certbot‑nginx -y
2. 一键申请并自动配置Nginx
certbot --nginx -d example.com -d www.example.com
按照提示填写邮箱、同意用户协议;出现选项时输入
2开启HTTP强制跳转HTTPS。3. 设置自动续期
# 测试续期命令是否正常 certbot renew --dry-run
系统定时任务会自动执行续期操作。 证书存放目录:
/etc/letsencrypt/live/example.com/。四、acme‑sh申请泛域名证书
*.example.com安装acme‑sh脚本
curl https://get.acme.sh | sh ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
DNS‑01验证获取泛域名证书 执行命令之后,根据提示在域名后台添加TXT解析记录,解析生效后下发证书。
将证书部署到Nginx
acme.sh --install-cert -d example.com --key-file /usr/local/nginx/conf/ssl/privkey.pem --fullchain-file /usr/local/nginx/conf/ssl/fullchain.pem --reloadcmd "systemctl restart nginx"
五、Nginx完整HTTPS配置
server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate ssl/fullchain.pem; ssl_certificate_key ssl/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE‑RSA‑AES128‑GCM‑SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; location / { root 网站根目录; index index.html; } } # HTTP全部跳转HTTPS server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }六、常见失败原因
安全组未放行
80和443端口;国内域名没有备案,证书机构拒绝签发;
开启CDN时继续用HTTP‑01验证;
80端口被其他服务占用。