acme-auto-ssl
acme.sh 实现了 acme 协议,可以从 ZeroSSL,Let’s Encrypt 等 CA 生成免费的证书。
主要步骤:
安装 acme.sh
签发证书
安装证书到 Nginx/Apache 或者其他服务
查看证书
续期
安装 acme
进入到~
目录
1 | git clone --depth 1 https://github.com/acmesh-official/acme.sh.git |
安装完成后重新加载 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 的简单对比
功能 | LE | Buypass | ZeroSSL | SSL.com | Google 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 | server { |
为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 |