使用 acme.sh 自动化SSL证书管理
# 使用 acme.sh 自动化SSL证书管理
随着网站安全性的重视,SSL/TLS 证书的应用变得越来越普遍。对于拥有大量子域名的网站来说,为每个子域名单独购买和管理证书可能会变得繁琐和昂贵。幸运的是,泛域名证书的出现解决了这个问题。而通过 acme.sh,您可以轻松实现泛域名证书的自动化申请和管理。本文将向您介绍如何使用 acme.sh 来申请泛域名证书。
# 什么是泛域名证书?
泛域名证书(Wildcard SSL Certificate)是一种 SSL/TLS 证书,可以用于保护主域名下的所有子域名。与传统的 SSL 证书不同,泛域名证书可以通过一个证书覆盖所有子域名,而无需为每个子域名单独购买和管理证书。这极大地简化了证书管理的工作,并提高了网站的安全性。
# 使用 acme.sh 申请泛域名证书
acme.sh 是一个开源的 ACME 协议客户端,可以用于自动化获取和管理 SSL/TLS 证书。它提供了简单的命令行接口,可以轻松实现证书的申请和管理。以下是使用 acme.sh 申请泛域名证书的步骤:
# 步骤一:安装 acme.sh
首先,您需要在您的服务器上安装 acme.sh。您可以通过以下命令在 Linux 系统上进行安装:
curl https://get.acme.sh | sh -s email=my@example.com
把 acme.sh 安装到你的 home 目录下:
~/.acme.sh/
并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh
# 步骤二:申请泛域名证书
# DNS API 模式
这里以腾讯云为例,登录 DNSPod 后台 (opens new window):
- 点击页面右上角头像、点击
API 密钥
菜单、选择DNSPod Token
- 点击
创建密钥
取一个名称如acme.sh
,就能生成一个随机的ID
、Token
。
执行以下命令申请证书:
# Dnspod.cn Domain Api Token
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
# 申请证书,执行后参数将保存至 ~/.acme.sh/account.conf 在自动续期时使用。
$ acme.sh --issue --dns dns_dp -d example.com -d *.example.com
2
3
4
5
6
# 步骤三:安装证书
证书申请成功后,您可以使用以下命令将证书安装到您的服务器上:
acme.sh --install-cert -d '*.example.com' \
--key-file /path/to/private/key \
--fullchain-file /path/to/fullchain/cert \
--reloadcmd "service nginx reload"
2
3
4
在这条命令中,您需要将 /path/to/private/key
和 /path/to/fullchain/cert
替换为您希望存储私钥和证书链的文件路径,并根据您使用的服务器软件修改 --reloadcmd
参数。
# 步骤四:定期更新证书
为了保证证书的有效性,建议定期更新证书。您可以使用 acme.sh 提供的自动更新功能,通过添加一个 Cron 任务来定期执行证书更新操作。
$ crontab -e
# 输入以下任务
0 0 * * * "~/.acme.sh"/acme.sh --cron --home "~/.acme.sh" > /dev/null
2
3
# 通知
acme.sh 可以在定时任务执行时发送通知。例如在每天晚上的检查任务运行时,您可能会收到基于 notify-level 和 notify-mode 设置的通知。
# Set notification for iOS Bark
export BARK_API_URL="https://api.day.app/XXXXXXXXXXXXXXXXXXXXXX"
export BARK_SOUND="newmail"
export BARK_GROUP=ACME
acme.sh --set-notify --notify-hook bark
2
3
4
# 其他操作
1、查看已签发证书的域名:
$ acme.sh --list
2、移除不需要再次签发证书的域名:
$ acme.sh --remove -d example.com
3、强制刷新证书
$ acme.sh --renew -d example.com --force
4、查看已安装证书信息
$ acme.sh --info -d example.com
# 会输出如下内容:
DOMAIN_CONF=/root/.acme.sh/example.com/example.com.conf
Le_Domain=example.com
Le_Alt=no
Le_Webroot=dns_ali
2
3
4
5
6
5、卸载
$ acme.sh --uninstall
# 结语
通过 acme.sh,申请和管理泛域名证书变得轻松愉快。泛域名证书可以为您的主域名下的所有子域名提供安全的 HTTPS 连接,保护用户数据的安全性和隐私性。立即使用 acme.sh,为您的网站加密通信,提升安全性!