ACME——域名证书从申请到安装到续签,一条龙服务
上个月,苹果公司联合微软、谷歌、Mozilla等公司,向CA/B论坛(负责管理SSL/TLS证书的行业组织)提议,分三年时间逐步缩短证书的有效期,到2028年3月15日后,将所有证书有效期缩短至45天。而CA/B论坛服务器证书工作组经过投票,通过了SC-081v3提案,最终决定将SSL/TLS证书有效期从398天降至47天,SAN数据重用周期缩短至10天。消息一经传出,网上运营人员哀嚎连连。47天,那是要天天盯着,哪天忘了更新,网站访问不了,那就等着被炒鱿鱼了。
其实,CA/B论坛之所以能通过此提案,是因为基于安全原因。并且,现在证书自动更新续签,都可自动化实现,完全不必担心人手不够的问题。那么,业界标准ACME就是运维人员的必备技能了。下面我们就来了解下,如何使用ACME来实现从申请到安装到续签的一条龙服务。
一、安装 acme.sh
# 使用一键脚本安装(普通用户或root均可)
curl https://get.acme.sh | sh -s email=your_email@example.com
但很多国内站点可能无法访问,会出现这种情况:
长时间的Speed为0,则是无法访问国外网站,下载不了。那么可以换成以下的安装方式:
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m your_email@example.com
安装脚本会自动安装在/root/.acme.sh目录,并且会写入/root/.bashrc文件。我们只需要执行:
source ~/.bashrc 即可执行 acme.sh --version
出现:
https://github.com/acmesh-official/acme.sh
v3.0.5
这样的显示就表示已安装成功。
二、申请免费证书
由于acme默认申请的是 ZeroSSL证书,如果想换成 Let’s Encrypt证书的,需要执行:
acme.sh --set-default-ca --server letsencrypt
[Fri May 23 11:35:54 PM CST 2025] Changed default CA to: https://acme-v02.api.letsencrypt.org/directory
如果想换回ZeroSSL的,则执行:
acme.sh --set-default-ca --server zerossl
[Fri May 23 11:36:10 PM CST 2025] Changed default CA to: https://acme.zerossl.com/v2/DV90
我就使用默认的ZeroSSL,也没觉得哪有问题。看个人喜好了。
1. 单域名证书
acme.sh --issue --dns dns_dp -d example.com
2. 多域名证书
acme.sh --issue --dns dns_dp -d example.com -d www.example.com -d api.example.com
3. 通配符证书(支持所有子域名)
acme.sh --issue --dns dns_dp -d example.com -d '*.example.com'
我们以单域名证书为例,示例如何使用DNS验证来申请证书:
执行 acme.sh --issue --dns dns_dp -d example.com,会出现下图所示,注意红框所示。这里就是要你在你的域名解析中加上.TXT解析,名称为:_acme-challenge,值为红框中提示的值。如图所示:
我们在域名解析界面,在域名注册商都有提供,如图:
解析成功后,注意不能再次执行:acme.sh --issue --dns dns_dp -d example.com,否则它又会生成新的私钥及提示你重新进行DNS解析。
我们要执行命令:acme.sh --renew -d example.com
如果验证通过,则会在/root/.acme.sh目录下自动生成证书文件。
三、安装证书到 Web 服务器
1. Nginx 示例
acme.sh --install-cert -d example.com \
--key-file /usr/local/nginx/ssl/example.com/cert.key \
--fullchain-file /usr/local/nginx/ssl/example.com/fullchain.cer \
--reloadcmd "systemctl reload nginx"
2. Apache 示例
acme.sh --install-cert -d example.com \
--cert-file /usr/local/apache2/ssl/example.com/cert.cer \
--key-file /usr/local/apache2/ssl/example.com/cert.key \
--fullchain-file /usr/local/apache2/ssl/example.com/fullchain.cer \
--reloadcmd "systemctl reload apache2"
四、自动续签
- acme.sh 已内置自动续签,每天检查证书有效期,到期前自动更新,并且会自动复制到对应的目录下。
- 手动强制续签:acme.sh --renew -d example.com --force
五、注意事项
1.DNS 记录未生效导致不能生成证书:等待 DNS 解析生效(通常 1-5 分钟)
2.保护 API 密钥:勿泄露 DP_Id 和 DP_Key
3.证书存储路径:避免直接引用 ~/.acme.sh/ 目录,使用 --install-cert 安装到安全位置。
4.最好是安装全域名证书,这样在检测时会得高分。
5.网站上线后,可以使用
https://www.ssllabs.com/ssltest/ 进行安全检测。
最后来看我的网站73ly.net 在线工具网的得分,A+,还不错吧:
相关文章
- Java性能优化的10大策略
- apache camel开源的项目技术含量满满的
- 服务器搭建(01)Gerrit服务器搭建 & 内网访问
- 全面解析 Linux 中的运行级别,从 SysV init 到 systemd
- 搭建网页看图神器
- 如何在 Ubuntu 24.04 LTS 或 22.04/20.04 上安装 Apache Maven
- 搭建N8N
- 时序数据库 TDengine × Superset:一键构建你的可视化分析系统
- 基于 Vue 3 与 Vite 构建现代化电商平台:Vue Shop 实践指南
- 业务监控—一站式搭建jmeter+telegraf+influxdb+Grafana看板