一 前言关于 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.pem2. 手动触发证书续期使用 --renew 或 --renew-all 命令手动更新证书：# 更新单个域名 acme.sh --renew -d vvars.com # 更新所有证书 acme.sh --renew-all3. 指定验证方式（如需要）根据证书初次申请时使用的验证方式，可能需要额外参数：1）HTTP 验证确保 Web 服务器可访问 .well-known/acme-challenge/ 目录：acme.sh --renew -d vvars.com --webroot /var/www/html2）DNS 验证使用 DNS API 自动验证（如 Cloudflare、阿里云等）：# 示例：Cloudflare export CF_Key="your_api_key" export CF_Email="your_email@example.com" acme.sh --renew -d example.com --dns dns_cf4. 强制更新（可选）若证书未到期但需强制更新，添加 --force 参数：acme.sh --renew -d vvars.com --force5. 检查续期日志若更新失败，使用 --debug 查看详细日志：acme.sh --renew -d vvars.com --debug6. 重启 Web 服务器更新后，重新加载配置使新证书生效：# Nginx sudo nginx -s reload # Apache sudo systemctl reload apache27. 确认自动续期配置确保 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 参数指定位置。
acme.sh免费SSL证书申请教程——安装acme.sh并使用阿里云域名API自动签发证书
一 前言随着各大搜索引擎增加对SSL证书认证的网站的收录和权重，获取SSL证书也成为各网站的首选，但一般各大SSL证书商提供的证书较贵，而网上提供90天的免费证书提供商有很多，每隔3个月的续期给网站管理带来挑战。关于acme.sh手动更新SSL证书，可以参考：acme.sh使用进阶：acme.sh 手动更新 SSL 证书的详细步骤1 ACME主要特点ACME.sh是一款非常优秀的签发SSL证书并自动续期的脚本（官方仓库地址)，其主要特点如下。纯粹用 Shell（Unix shell）语言编写的 ACME 协议客户端。 完整的 ACME 协议实现。 支持ECDSA证书 支持 SAN 和通配符证书 简单、强大、易用。只需 3 分钟即可学会。 兼容 Bash、dash 和 sh。 纯粹用 Shell 编写，不依赖于 python。 只需一个脚本即可自动颁发、更新和安装您的证书。 不需要root/sudoer访问权限。 Docker 就绪 IPv6 就绪 用于更新或错误等的 Cron 作业通知。 它可能是easiest & smartest自动颁发和更新免费证书的 shell 脚本。2 支持的CA证书支持的 CA ZeroSSL.com CA（默认） Letsencrypt.org CA BuyPass.com 加拿大 SSL.com 认证 Google.com 公共 CA Pebble 严格模式 任何其他符合RFC8555的 CA3 支持的模式Webroot 模式 独立模式 独立 tls-alpn 模式 阿帕奇模式 Nginx 模式 DNS 模式 DNS 别名模式 无状态模式二 ACME.sh的安装ACME.sh最新版本为V3，其安装较为简单。1 安装curl https://get.acme.sh | sh -s email=my@example.com或wget -O - https://get.acme.sh | sh -s email=my@example.com注：my@example.com为你的邮箱地址。2 安装完毕后可以使用 acme.sh --version 检查状态acme.sh --version一般会提示：https://github.com/acmesh-official/acme.shv3.0.13 升级 acme.sh# 升级到最新版 acme.sh --upgrade # 开启自动升级 acme.sh --upgrade --auto-upgrade # 关闭自动升级 acme.sh --upgrade --auto-upgrade 0三 使用阿里云api自动签发证书ACME.sh提供了多种认证方式，http认证方式经常会报错，笔者建议采用dns API认证。各大 dns 提供商的使用方式参考此处，这里以阿里云API认证为例。1 获取阿里云API Key和API Secret首先你需要登录你的阿里云账号获取API key。https ://ram.console.aliyun.com/users。2 在VPS SSH环境中定义前面获取的API Key和API Secretexport Ali_Key="<key>" export Ali_Secret="<secret>"3 颁发证书./acme.sh --issue --dns dns_ali -d vvars.com -d www.vvars.com4 查看和操作已安装证书# 查看已安装证书 acme.sh --list # 删除证书 acme.sh remove <SAN_domains> 5 更新证书如果需要手动续签，则执行#更新证书，未到期则不会更新 acme.sh --renew -d vvars.com #强制更新证书 acme.sh --renew -d vvars.com --force # 更新所有证书 acme.sh --renew-all