---
url: /tools/acme.md
description: acme.sh 是一款非常方便的自动部署更新免费 HTTPS 数字证书的工具，本文介绍如何使用 acme.sh 实现自动部署更新免费 HTTPS 数字证书。
---

想要使用免费的HTTPS证书，但是又觉得三个月的有效期太短，那么我想你需要的是一款可以自动部署、更新HTTPS证书的工具——acme.sh。

## 什么是acme.sh

acme.sh 实现了 acme 协议, 不仅可以从 zerossl或者letsencrypt 自动生成免费的证书，还支持自动更新快过期的证书。

总之就是主打一个免费还方便，让你轻松实现HTTPS证书自由。

## 安装acme.sh

只需要一行命令即可：

```sh
curl https://get.acme.sh | sh -s email=my@qq.com
```

注意替换成自己的邮箱

## 设置默认证书

acme.sh脚本默认ca服务器是zerossl，经常出错，会导致获取证书的时候一直出现：Pending, The CA is processing your order, please just wait。

只需要把ca服务器改成letsencrypt 即可，虽然更改以后还是有概率出现pending，但基本2-3次即可成功。

```sh
acme.sh --set-default-ca --server letsencrypt
```

## 生成证书

acme.sh 实现了 acme 协议支持的所有验证协议。 一般有两种方式验证: http 和 dns 验证。

本文以dns验证方式为例。

假设你的域名是在阿里云上，则需要在阿里云创建一个RAM账号(https://ram.console.aliyun.com/users)，并获取到`AccessKey ID`和`AccessKey`。注意需要给该账号赋予管理DNS的权限，否则无法实现自动申请、更换证书。

然后就可以使用命令生成证书啦

```sh
# 只需要配置一次
export Ali_Key="<AccessKey ID>"
export Ali_Secret="<AccessKey>"

./acme.sh --issue --dns dns_ali -d *.xi-n.com
```

如果成功后则显示如图
![](/img/d6f8ac47-618f-401c-a665-06fbef1b8c02.png)

此时，证书就会自动生成了。 这里配置的`Ali_Key`和`Ali_Secret`会被自动记录下来， 后续再增加新域名的时候就不需要再次配置了，直接生成就好了:

```sh
acme.sh --issue -d *.meetcoding.cn --dns dns_ali
```

acme.sh已经集成了所有主流的dnsapi，不管是用阿里云做域名解析还是用腾讯云等，都是通过上述类似的步骤完成配置。

## 安装证书

使用`--install-cert`命令，并指定目标位置，然后证书文件会被copy到相应的位置。
以Nginx配置为例：

```sh
acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"
```

安装路径可以根据需求修改地址，同时在Nginx的配置中也需要配置对应路径

```
ssl_certificate_key "/path/to/keyfile/in/nginx/key.pem";
ssl_certificate "/path/to/fullchain/nginx/cert.pem";
```

## 查看已经申请的证书

```sh
acme.sh --list
```

![](/img/da60c650-da5e-43b0-834e-a17416355239.png)

## 更新证书

更新证书都是自动完成的，无需我们手动再管理。查看自动更新的任务

```
crontab -l
```

![](/img/21a4afb1-278a-460e-a27d-cde5a511f676.png)

由此我们可以知道，所谓的自动更新就是配置了一个定时任务，该任务会自动检测证书是不是快过期，如果快过期了就会自动把上述过程执行一遍，从而实现自动更新。

## 进阶

acme.sh提供了丰富的配置项以便满足用户多种多样的使用场景。如果你也想要尝试使用acme.sh，期望你在配置过程中可以多参考文档。您可以关注公众号：遇码，回复**https**获取文档。
