通过acme.sh和cloudflare实现免费ssl证书自动签发

下载acme.sh

curl https://get.acme.sh | sh -s email=你的邮箱
cd ~/.acme.sh/

获取Cloudflare密钥

Preferences | Cloudflare

  1. Login in
  2. Enter “Profile of your account” Page
  3. Apply “Api Token”
  4. Select Create Token
  5. Select “Edit Zone DNS”
  6. Get and copy “Token”
  7. Get “Account ID” in OverView Page

配置Acme.sh

导入配置信息

进入 用户目录下的 .acme.sh文件夹下, 如 cd /root/acme.sh

export CF_Token=""
export CF_Account_ID=""
export CF_Zone_ID=""

更换默认证书发行商并签发证书

因默认证书发行服务商需要导入登陆相关秘钥, 所以更换为 letsencrypt

./acme.sh --set-default-ca  --server  letsencrypt
./acme.sh --issue --dns dns_cf -d 你的域名 

修改nginx配置

修改nginx的conf配置文件, 在 server字段里增加证书地址


  ssl_certificate      /ssl存放地址/fullchain.pem;  
  ssl_certificate_key  /ssl存放地址/cert_file/key.pem;

安装

将指定的证书安装下载到指定文件夹指定文件, 多个域名证书可以写入到单个文件

安装
acme.sh --install-cert -d bytevoyage.site -d *.bytevoyage.site \
		--key-file   /ssl存放地址/key.pem  \
		--fullchain-file /ssl存放地址/fullchain.pem \
		--reloadcmd     "service nginx force-reload"

查看定时任务

安装完毕后会在系统内自动创建定时任务, 到期自动重新签发新的证书

### 查看定时任务
acme.sh --renew -d example.com --force

crontab -l  // View created tasks

参考资料