之前有记录使用certbot安装Let’s Encrypt证书,但是certbot不支持管理更新ecc证书,功能也没acme强大。
安装acme.sh,成功后会添加crontab定时自动续期。
curl https://get.acme.sh | sh
source ~/.bashrc
设置邮件地址,用以续期通知,也可以使用高级安装acme时指定邮箱和证书目录。
acme.sh --update-account --accountemail a@haiyun.me
高级安装:
cd /usr/local/src/
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --home /usr/local/acme --config-home ~/etc/acme \
--accountemail "admin@haiyun.me"
使用dns验证域名,设置dnspod api,运行acme后会自动保存到配置:
export DP_Id="api id"
export DP_Key="api key"
申请ecc证书,renew-hook当证书申请成功后执行的命令,此参数会保存到域名配置文件/etc/acme/haiyun.me/haiyun.me.conf,后续renew更新证书后调用。
acme.sh --issue --dns dns_dp -d haiyun.me -d www.haiyun.me -k ec-256 --renew-hook "systemctl restart nginx"
#使用http server验证
acme.sh --issue --webroot /var/www/ -d haiyun.me -d www.haiyun.me -k ec-256 --renew-hook "systemctl restart nginx"
acme申请泛域名:
acme.sh --issue --dns dns_dp -d haiyun.me -d *.haiyun.me -k ec-256
使用其它dns api:
ls /usr/local/acme/dnsapi/*gandi*
grep KEY /usr/local/acme/dnsapi/*gandi*
在issue时没指定renew-hook可复制申请的证书到指定目录,acme会记录安装的位置,后续更新证书后会自动复制:
acme.sh --installcert -d haiyun.me --ecc --key-file /etc/nginx/ssl/haiyun.me.key \
--cert-file /etc/nginx/ssl/haiyun.me.cert --fullchain-file /etc/nginx/ssl/haiyun.me.fullchain.cer \
--reloadcmd "systemctl restart nginx"
吊销证书:
acme.sh --revoke -d haiyun.me --ecc
更新证书:
acme.sh --renew -d haiyun.me --ecc
查看证书列表
acme.sh --list
查看指定证书详细信息:
acme.sh --info -d haiyun.me
crontab定时更新:
00 1 * * * /usr/local/acme/acme.sh --cron --home "/usr/local/acme" --config-home "/etc/acme"