acme-auto-ssl
王二麻麻 Lv2

acme.sh 实现了 acme 协议,可以从 ZeroSSL,Let’s Encrypt 等 CA 生成免费的证书。

主要步骤:

  1. 安装 acme.sh

  2. 签发证书

  3. 安装证书到 Nginx/Apache 或者其他服务

  4. 查看证书

  5. 续期

github 官方文档地址

安装 acme

进入到~目录

1
2
3
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m wanghonghui@cp.com.cn

安装完成后重新加载 Bash,保证可以使用acme.sh 命令

1
source ~/.bashrc

开启自动更新acme 功能:

1
acme.sh --upgrade --auto-upgrade

我们统一使用 Let's Encrypt,作为证书源,切换:

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

几个 CA 的简单对比

功能LEBuypassZeroSSLSSL.comGoogle Public CA
有效期90 天180 天90 天90 天90 天
多域名支持支持,最多 5 个支持收费支持支持
泛域名支持不支持支持收费支持支持
Rate Limit收费无未知
GUI 管理
ECC 证书链未知
客户支持社区收费收费收费收费

签发证书

HTTP 签发为例(DNS 签发参考文档

首先我们要做一下准备工作,假设你域名是 example.com,解析到你的服务器让其生效后,我们建立一个目录:

1
mkdir -p /var/www/letsencrypt

我们的目的是绑定 http://example.com/.well-known/acme-challenge 到这个目录。

如果您用的 Nginx,那么新建一个配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
listen [::]:80;
server_name example.com;

location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}

location / {
rewrite ^/(.*)$ https://$host/$1 permanent;
}
}

example.com域名签发证书

1
acme.sh --issue -d example.com -w /var/www/letsencrypt

安装证书

实际上是把签发的证书拷贝到 nginx 的证书目录中

1
acme.sh --install-cert -d example.com --key-file /etc/nginx/cert/api.zgcsxh.org.cn.key --fullchain-file /etc/nginx/cert/example.com.crt --ca-file /etc/nginx/cert/example.com.ca.crt --reloadcmd "systemctl restart nginx"

安装完后,nginx 可以配置监听 443 端口,并开启 ssl

配置忽略

查看已安装的证书

1
acme.sh --info -d www.vdict.cn

自动续期

目前证书每 60 天自动更新,你无需任何操作。

但是你也可以强制续签证书:

1
acme.sh --renew -d example.com --force