1.下载安装 acme.sh
curl https://get.acme.sh | sh -s email=邮箱
source ~/.bashrc
#查看版本
acme.sh -v
acme.sh默认安装在/root/.acme.sh,使用 ll -a查看
2.获取阿里云DNS api
其他云厂商 api 获取方式参考:https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_ali
控制台搜索“访问控制”
创建用户组并添加权限:AliyunDNSFullAccess
创建用户并勾选 Open API 调用访问,添加到刚才创建的用户组中
用户——认证管理——创建 AccessKey
#声明环境变量
export Ali_Key="AccessKey ID"
export Ali_Secret="AccessKey"
在第一次申请证书后 Ali_Key
和 Ali_Secret
将会自动保存在 ~/.acme.sh/account.conf
并在以后需要时重新使用。
3.申请通配符证书
acme.sh --issue --dns dns_ali -d 域名 -d *.域名
acme会自动创建一个 cronjob, 在每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。
crontab -l #查看
crontab -e #编辑
4.copy 证书
生成的证书都放在安装目录下: ~/.acme.sh/
, 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化。
将证书 copy 到自定义的目录下,在nginx/apache配置文件中引用此目录下的证书。
#nginx
acme.sh --install-cert -d 域名 --key-file /blog/ssl/域名.key --fullchain-file /blog/ssl/fullchain.cer --reloadcmd "service nginx force-reload"
#apache
acme.sh --install-cert -d 域名 \
--cert-file /path/to/certfile/in/apache/cert.pem \
--key-file /path/to/keyfile/in/apache/key.pem \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd "service apache2 force-reload"
Nginx 的配置 ssl_certificate
使用 /etc/nginx/ssl/fullchain.cer
,而非 /etc/nginx/ssl/域名.cer
5.查看已安装证书的信息
acme.sh --info -d 域名
6.升级
#升级acme
acme.sh --upgrade
#开启自动升级
acme.sh --upgrade --auto-upgrade
#关闭自动升级
acme.sh --upgrade --auto-upgrade 0
#更新证书
acme.sh --renew -d 域名 --force
7.更改acme的 ca 服务器
acme.sh目前默认的ca服务器是zerossl,可能会出现出错:
Pending, The CA is processing your order, please just wait.
#更改acme的ca服务器为letsencrypt
acme.sh --set-default-ca --server letsencrypt