安装acme
acme.sh开源地址:
安装命令
curl https://get.acme.sh | sh
或
curl https://get.acme.sh | sh -s email=my@example.com
离线安装包
注意
安装目录默认当前用户的根目录,普通用户:/home/用户/.acme.sh/;root用户:/root/.acme.sh
设置快捷方式(可选)
alias acme.sh=~/.acme.sh/acme.sh
切换获取证书的默认库
切换 Let's Encrypt(推荐)
acme.sh --set-default-ca --server letsencrypt
切换 Buypass
acme.sh --set-default-ca --server buypass
切换 ZeroSSL
acme.sh --set-default-ca --server zerossl
切换 SSL.com
acme.sh --set-default-ca --server ssl.com
切换 Google Public CA
acme.sh --set-default-ca --server google
默认从ZeroSSL获取证书切到letsencrypt申请证书 ZeroSSL不太稳定
生成证书及使用
证书生成
sh acme.sh --issue -d www.domain.com --webroot /usr/share/nginx/html
生成成功标识:3YSvz5BVh+DlGH4lcWnlrq/vx4inOODH7yOXK/81XsrBs+qc3WYIIIbJS3EAmfyd
ArcadQdHrSgc+Y3rwgMJm3w/OObnLfaiD+n8JBRmgOkQU7ozEdR+BsqWNB8NQ9ke
kMpdK7zK1DjvMMstBtwVGvsblBnHOo9LVvCtvhhzU3jYaIjE9NdBR3K7XKYagkNy
0RK5fAJ7oGmwlQM1ZGQizm05Yhm38PPTbVxi
-----END CERTIFICATE-----
[2022年 06月 07日 星期二 00:31:20 CST] Your cert is in: /home/tech1/.acme.sh/www.domain.com/www.domain.com.cer
[2022年 06月 07日 星期二 00:31:20 CST] Your cert key is in: /home/tech1/.acme.sh/www.domain.com/www.domain.com.key
[2022年 06月 07日 星期二 00:31:20 CST] The intermediate CA cert is in: /home/tech1/.acme.sh/www.domain.com/ca.cer
[2022年 06月 07日 星期二 00:31:20 CST] And the full chain certs is there: /home/tech1/.acme.sh/www.domain.com/fullchain.cer
示例域名:www.domain.com
当前域名80端口访问的根目录:/usr/share/nginx/html,用于验证域名
证书使用(证书解析容器可用格式)
nginx
sh acme.sh --install-cert -d www.domain.com --key-file /etc/ssl//acme/domain.key --fullchain-file /etc/ssl//acme/domain.pem --reloadcmd "service nginx force-reload"
解析成功标识:[2022年 06月 07日 星期二 00:31:20 CST] Installing key to: /etc/ssl/acme/domain.key
[2022年 06月 07日 星期二 00:31:20 CST] Installing full chain to: /etc/ssl/acme/domain.pem
[2022年 06月 07日 星期二 00:31:20 CST] Run reload cmd: service nginx force-reload
Redirecting to /bin/systemctl force-reload nginx.service
[2022年 06月 07日 星期二 00:31:20 CST] Reload success
证书续期
由于证书有效期只有90天,所以需要编写定时任务,每两月做一次续期
编写定时任务
定时任务示例:vim createssl.sh
#! /bin/bash#生成证书并验证, --force强制更新,默认60天更新一次
echo "creat acme"sh acme.sh --issue -d www.domain.com --webroot /usr/share/nginx/html/dist --force
#将证书解析为nginx可用的
echo "to nginx"sh acme.sh --install-cert -d www.domain.com --key-file /etc/ssl/acme/domain.key --fullchain-file /etc/ssl/acme/domain.pem --reloadcmd "service nginx force-reload"
#nginx重新加载配置
nginx -s reload
脚本赋权
chmod 777 createssl.sh
配置定时任务
配置编辑
crontab -uroot -e
0 0 1 * * "/etc/ssl//createssl.sh" > /dev/null其他当时任务命令:
systemctl stop crond #关闭crontab服务
systemctl start crond #开启crontab服务
systemctl restart crond #重启crontab服务
tail -f /var/log/cron #打印crontab日志(默认打印10条)
crontab -uroot -e
#编辑crontab服务,配合insert esc :wq(保存退出) :q!(不保存退出)等指令
crontab -l #列出crontab任务列表
```
acme 脚本更新
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.升级 acme.sh 到最新版 :
acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:
acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.
你也可以随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0
错误查看:
acme.sh --issue ..... --debug