ubuntu20为例,介绍使用新的cloudflare api令牌来申请证书

一、安装配置acme.sh脚本

以root用户ssh登陆到主机,使用下面命令安装配置脚本:

# 更新源并安装socat
apt update && apt -y install socat

# 安装脚本
wget -qO- get.acme.sh | bash

# 让脚本在.bashrc文件追加的一行环境变量生效,以后无论在哪里直接使用acme.sh,不用输绝对路径
source ~/.bashrc

# 由于最新acme.sh脚本默认ca变成了zerossl,现执行下面命令修改脚本默认ca为letsencrypt
acme.sh --set-default-ca --server letsencrypt

二、配置Cloudflare局部令牌

2.1 创建令牌
根据acme.sh脚本作者提供的文档:使用新的cloudflare api令牌,需要新创建此令牌方可使用:
1.jpg
2.jpg
3.jpg
依照上述图片设置即可,添加区域-DNS-编辑和区域-区域-读取权限,区域资源里面选择包括-账户的所有区域-你的账户。
继续然后创建令牌,注意令牌只会显示一次注意保存。
2.2 获取账户ID和区域ID
根据acme.sh文档,申请证书可能还需要提供两个ID,其中账户ID必须,区域ID可有可无
进入首页点击绑定的域名,概述页面下拉即可找到
4.jpg
至此,即准备好了申请证书需要的材料:

# 上面第一步创建的令牌,即为token
CF_Token="xxxxxxx“

# 根据上图分别获取账户ID和区域ID
CF_Account_ID="aaaaaaaa"
CF_Zone_ID="bbbbbbbbb"   //此项非必须

三、申请配置证书

3.1 申请证书
假定你的域名是example.com,执行下面命令申请证书,非root用户也可执行:

# 执行此命令设置变量的值,acme.sh脚本执行过程会读取
export CF_Token="xxxxxxx"
export CF_Account_ID="aaaaaaa"
export CF_Zone_ID="bbbbbbbb"   //此项非必须,上面两项需要提供

# 申请证书
acme.sh --issue -d example.com -d *.example.com --dns dns_cf -k ec-256

3.2 安装证书到指定位置
假定linux主机里已有/etc/ssl目录,现在要把证书和key安装到此目录下,那么执行下面的命令即可:

acme.sh --installcert -d example.com -d *.example.com --fullchain-file /etc/ssl/web.crt --key-file /etc/ssl/web.key --ecc

# 用--reloadcmd指定安装证书后的命令
acme.sh --installcert -d example.com -d *.example.com --fullchain-file /etc/ssl/web.crt --key-file /etc/ssl/web.key --ecc --reloadcmd "/nginx/nginx/sbin/nginx -s reload"

请注意:reloadcmd非常重要,--reloadcmd "" 中为重启对应服务命令,如上为博主自己服务器上重启nginx服务命令。如果没有正确的“reloadcmd”,证书可以自动续订,但是证书可能无法刷新到您的服务器(如nginx或apache),那么您的网站将无法在60天内显示续订证书。
3.3 证书更新
从letsencrypt申请到的证书有效期是90天,脚本每60天会对证书进行更新,你也可以手动强制更新:

# 查询域名申请证书信息
acme.sh --list
acme.sh --remove -d *.example.com  //删除证书
# 手动强制更新证书
acme.sh --renew -d example.com -d *.example.com --force --ecc
acme.sh --renew -d example.com -d *.example.com --force //非ECC证书使用此命令