ACME自签证书
获取API-KEY 设置环境变量
官网获取cloudfare api-key,设置环境变量。获取方法参考教程
API-KEY:获取位置如图
ZoneID与AccountID获取位置:
设置环境变量
export CF_Token="Your Api Key"
export CF_Zone_ID="Your Zone ID"
export CF_Account_ID="Your Account ID"
安装ACME脚本
Check this project: https://github.com/acmesh-official/get.acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
Or:
wget -O - https://get.acme.sh | sh -s email=my@example.com
Or, Install from git Clone this project and launch installation:
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m my@example.com
获取证书
./acme.sh --issue -d lovezsr.cfd -d '*.mydomain.com' -k ec-256 --dns dns_cf --dnssleep 60
安装证书
可以使用图形化界面导入ssl证书(宝塔面包、1panel面板),也可使用脚本配置证书。下面如何介绍脚本配置证书:
修改服务器的配置,指定证书路径。
# Caddy Server
tls /srv/ssl/example.com_fullchain.cer /srv/ssl/example.com.key
# nginx
ssl_certificate /srv/ssl/example.com_fullchain.cer;
ssl_certificate_key /srv/ssl/example.com.key;
acme.sh --install-cert \
-d example.com --ecc \
--key-file /srv/ssl/example.com.key \
--fullchain-file /srv/ssl/example.com_fullchain.cer \
--reloadcmd "rc-service caddy reload"
参数说明:
--install-cert
:安装证书,把证书文件复制到相应的目录。-d
:指定域名。--ecc
:ecc 证书使用此参数,对应签发时使用的-k ec-256
。--key-file
:指定 key 的存储路径。--fullchain-file
:指定 合并的证书文件 的存储路径。--reloadcmd
:复制完成后执行命令。这里是「重新加载 caddy」,如果用的是 nginx 可以使用systemctl restart nginx
或nginx -s reload
。
证书路径及重新加载的命令,请根据需要调整功能。
自动更新证书
acme.sh 可以使用 crontab 定时检查证书是否过期,并重新签发。crontab 文件一般位于 /var/spool/cron/
或 /etc/crontabs
目录下。
crontab -l
查看计划任务;crontab -e
编辑计划任务。
cronjob 格式一般如下:
# 分钟 小时 日期 月份 星期 命令
17 02 * * * "/PATH/.acme.sh"/acme.sh --cron --home "/PATH/.acme.sh" > /dev/null
表示每天凌晨 02:17 检查证书是否到期。默认设定证书到期前 30 天更新证书。
如果安装时 cronjob 没有添加成功,可以使用 acme.sh --install-cronjob
手动添加。
手动更新证书
# 更新一个证书
acme.sh --renew -d example.com --ecc
# 更新所有证书
acme.sh --renew-all
# 运行 cronjob 来更新证书(可用于检查 cronjob 命令是否正确)
acme.sh --cron
更新证书时,会自动跳过未到期的。可以使用 --force
参数进行强制更新。