一 前言
关于 TLS/SSL
传输层安全协议(英语:Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障
为什么要部署 HTTPS
说到底,就是 HTTPS 更安全。甚至为了安全,一个专业可靠的网站, HTTPS 是必须的。 Firefox 和 Chrome 都计划将没有配置 SSL 加密的 HTTP 网站标记为不安全(貌似 Firefox 50 已经这么干了),目前它们也正在联合其他相关的基金会与公司推动整个互联网 HTTPS 化,现在大家访问的一些主要的网站。如 Google 多年前就已经全部启用 HTTPS ,国内的淘宝、搜狗、知乎、百度等等也全面 HTTPS 了。甚至 Google 的搜索结果也正在给予 HTTPS 的网站更高的排名和优先收录权。
怎么部署 HTTPS
你只需要有一张被信任的 CA ( Certificate Authority )也就是证书授权中心颁发的 SSL 安全证书,并且将它部署到你的网站服务器上。一旦部署成功后,当用户访问你的网站时,浏览器会在显示的网址前加一把小绿锁,表明这个网站是安全的,当然同时你也会看到网址前的前缀变成了 HTTPS ,不再是 HTTP 了。
怎么获得 SSL 安全证书
理论上,我们自己也可以签发 SSL 安全证书,但是我们自己签发的安全证书不会被主流的浏览器信任,所以我们需要被信任的证书授权中心( CA )签发的安全证书。而一般的 SSL 安全证书签发服务都比较贵,比如 Godaddy 、 GlobalSign 等机构签发的证书一般都需要 20 美金一年甚至更贵,不过为了加快推广 HTTPS 的普及, EEF 电子前哨基金会、 Mozilla 基金会和美国密歇根大学成立了一个公益组织叫 ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了 Let’s Encrypt 免费证书。这个免费证书不仅免费,而且还相当好用,所以我们就可以利用 Let’s Encrypt 提供的免费证书部署 HTTPS 了
之前本站介绍过如何安装acme.sh,以及通过阿里云API自动签发证书:
acme.sh免费SSL证书申请教程——安装acme.sh并使用阿里云域名API自动签发证书。本文介绍在个别情况下SSL自动更新失败的时候如何手动更新SSL。
二 安装步骤
1 查看证书到期时间
在更新前,确认当前证书的到期时间:
acme.sh --list
或直接查看证书文件:
openssl x509 -enddate -noout -in /path/to/cert.pem
2. 手动触发证书续期
使用 --renew 或 --renew-all 命令手动更新证书:
# 更新单个域名
acme.sh --renew -d vvars.com
# 更新所有证书
acme.sh --renew-all
3. 指定验证方式(如需要)
根据证书初次申请时使用的验证方式,可能需要额外参数:
1)HTTP 验证
确保 Web 服务器可访问 .well-known/acme-challenge/ 目录:
acme.sh --renew -d vvars.com --webroot /var/www/html
2)DNS 验证
使用 DNS API 自动验证(如 Cloudflare、阿里云等):
# 示例:Cloudflare
export CF_Key="your_api_key"
export CF_Email="[email protected]"
acme.sh --renew -d example.com --dns dns_cf
4. 强制更新(可选)
若证书未到期但需强制更新,添加 --force 参数:
acme.sh --renew -d vvars.com --force
5. 检查续期日志
若更新失败,使用 --debug 查看详细日志:
acme.sh --renew -d vvars.com --debug
6. 重启 Web 服务器
更新后,重新加载配置使新证书生效:
# Nginx
sudo nginx -s reload
# Apache
sudo systemctl reload apache2
7. 确认自动续期配置
确保 acme.sh 的自动任务已启用:
crontab -l | grep acme.sh
正常会显示类似:
0 0 * "/home/user/.acme.sh"/acme.sh --cron
三 常见问题
1 权限问题
确保 acme.sh 有权限写入证书目录。
避免使用 sudo,建议以普通用户运行。
2 DNS API 配置
若使用 DNS 验证,确保环境变量(如 CF_Key)已正确设置。
3 证书路径变更
若需更改证书保存路径,使用 --cert-file 和 --key-file 参数指定位置。
[...]一 前言随着各大搜索引擎增加对SSL证书认证的网站的收录和权重,获取SSL证书也成为各网站的首选,但一般各大SSL证书商提供的证书较贵,而网上提供90天的免费证书提供商有很多,每隔3个月的续期给网站管理带来挑战。关于acme.sh手动更新SSL证书,可以参考:acme.sh使用进阶:acme.sh 手动更新 SSL 证书的详细步骤1 ACME主要特点ACME.sh是一款非常优秀的签发SSL证书并自[...]