---
title: acme协议脚本安装Let'sEncrypt免费通配符域名证书
description: acme.sh是实现ACME客户端协议的纯Unix shell脚本。ACME（自动化证书管理环境）是一种协议，用于自动化证书颁发机构与其用户的web服务器之间的
author: chaihongjun
category: operations
published: 2024-12-09
url: https://chaihongjun.me/operations/34.html
---

# acme协议脚本安装Let'sEncrypt免费通配符域名证书

acme.sh是实现ACME客户端协议的纯Unix shell脚本。ACME（自动化证书管理环境）是一种协议，用于自动化证书颁发机构与其用户的web服务器之间的交互。它用于为HTTPS加密颁发和续订SSL/TLS证书。

用这个工具可以免费申请并获得SSL证书，而且这个证书可以定时自动更新。一次配置终生受益，这里以nginx环境做以下说明。

官方的中文说明：

> https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

首先是安装脚本客户端：

<pre wget -O -  https://get.acme.sh | sh -s email=my@example.com

经过脚本执行，会在你当前账户的家目录下创建一个隐藏的目录.acme.sh。并且自动创建一个cronjob，自动每天0点检测证书并每60天更新一次证书。这个目录里面有一些配置和执行文件。

官网介绍了生成证书的两种验证签发模式，包括http的验证签发和DNS的验证签发。我们选择后一种。

> 自动验证（DNS API）
> DNS 方式的真正强大之处在于可以使用域名解析商提供的 API 自动添加 TXT 记录，且在完成验证后删除对应的记录。
> acme.sh 目前支持超过一百家的 DNS API。

具体支持哪些DNS API可以去这里查看：

> https://github.com/acmesh-official/acme.sh/wiki/dnsapi

接着去DNS解析平台获取API Key和ID，记得保存好。后面就是进入最后的申请签发准备(dnspod为例，这里的Key和ID换成对应平台申请的内容)：
MDBLOCK0
在终端输入上面的配置之后，.acme.sh目录下面的account.conf文件会写入：
MDBLOCK1
后续的签发更新不需要我们再输入。

以上准备工做完毕之后进入申请签发环节：
MDBLOCK2
进入.acme.sh目录执行上面的脚本。

如果脚本在执行之后出现错误，请重新加参数 --debug 2 再执行一次看一下具体的报错信息，然后去github查询解决方案。

证书是默认生成在.acme.sh目录内，直接使用不妥：

> 证书生成好以后，我们需要把证书复制给对应的 Apache、Nginx 或其他服务器去使用。
> 必须使用 --install-cert 命令来把证书复制到目标文件，请勿直接使用 ~/.acme.sh/ 目录下的证书文件，这里面的文件都是内部使用，而且目录结构将来可能会变化。

所以需要复制证书给服务器使用:
MDBLOCK3
记得网站那里的配置需要更新：
MDBLOCK4
所有的配置完成，最后需要nginx重载一下。以上全部完成之后，证书签发和配置都完成了。

关于其他的一些说明：

如果你需要再次添加新的域名签发证书公用，那就需要使用--force参数：
MDBLOCK5
原本已经签发过example.com证书，这里增加通配符域名证书，所以需要强制再次签发。

如果你需要手动强制更新证书：
MDBLOCK6
如果不想客户端自动升级：

MDBLOCK7
查看客户端当前版本：
MDBLOCK8
更多信息查看官网

---

> 本文首发于 [chaihongjun.me | 柴宏俊 web 技术学习笔记](https://chaihongjun.me/operations/34.html)，采用 CC BY-NC-ND 4.0 协议，转载请保留出处与链接。
