前言:acme.sh
是一个非常好用的用来申请证书的脚本,它开源在Github,它极大地降低了申请证书的难度,支持使用cloudflare api等众多api来申请证书。
本文主要介绍使用此脚本来申请ssl证书,给你的http请求加把锁,具体会使用cloudflare api
来介绍。
准备条件:
- 一台被分配了公网IP的主机
- 一个域名(建议购买收费域名)
- 电脑ssh客户端
- 能解决遇到问题的个体
一、Global API申请证书部份
1.1、安装脚本文件
以root
用户ssh连接到主机,使用下面命令安装脚本:
1.2、配置证书
1.2.1 获取Cloudflare api key
注册好cloudflare账号,把域名dns的解析权限交给cloudflare处理,这样以后只需要在cloudflare这里配置解析记录。按照图示获取cloudflare api key
。
1.2.2 申请证书(二选一)
这里假定你的域名是yourdomain.com
,执行下面命令申请证书:
1.2.2.1 dns方式验证
说明:Cloudflare现已不支持.tk .cf .ml
等免费申请来的域名后缀使用此dns验证方式,付费域名才受支持,免费域名使用下面2.2.2方式。脚本申请到的证书和key都放在~/.acme.sh/yourdomain.com_ecc
目录下。
1.2.2.2 http方式验证
执行下面命令前请保证你80端口没有被别的程序使用,如果有,kill掉,执行下面命令前需要你先在cloudflare dns那里添加好A记录,可以开启cloudflare cdn(cdn对此http方式验证无影响):
说明:跟上面一样,脚本申请到的证书放在~/.acme.sh/yourdomain.com_ecc
目录下
1.2.3 安装证书到指定位置
假定linux主机里已有/root/ssl
目录,现在要把证书和key安装到此目录下,那么执行下面的命令即可:
1.3、证书更新
从letscncrypt申请到的证书有效期是90天,但脚本会每60天会对证书进行更新,后续可能会缩短这个时间,都是自动的。
二、局部API部份
本文主要以Debian10
为例,介绍使用新的cloudflare api
令牌来申请证书,免费域名已不受cloudflare
此种方式来申请证书,请使用付费域名。
2.1、安装配置acme.sh脚本
以root
用户ssh登陆到主机,使用下面命令安装配置脚本:
2.2、配置Cloudflare局部令牌
2.2.1 创建令牌
根据acme.sh
脚本作者提供的文档:使用新的cloudflare api令牌,需要新创建此令牌方可使用:
依照上述图片设置即可,添加区域-DNS-编辑
和区域-区域-读取
权限,区域资源里面选择包括-账户的所有区域-你的账户
。
配置好以后,点击创建令牌
,注意此令牌token
只会出现一次,切记保存,切记保存,切记保存!!!
2.2.2 获取账户ID和区域ID
根据acme.sh
文档,申请证书可能还需要提供两个ID,其中账户ID必须,区域ID可有可无,根据下图方法获取此两个ID:
下拉,找到API区域:
至此,即准备好了申请证书需要的材料:
2.3、申请配置证书
2.3.1 申请证书
假定你的域名是example.com
,执行下面命令申请证书,非root
用户也可执行:
2.3.2 安装证书到指定位置
假定linux主机里已有/etc/ssl
目录,现在要把证书和key安装到此目录下,那么执行下面的命令即可:
说明:脚本更新完证书后,会自动依据上面指定的绝对路径将证书和key安装到指定位置,并根据--reloadcmd
执行相应的操作。
2.3.3 证书更新
从letsencrypt
申请到的证书有效期是90天,脚本每60天会对证书进行更新,你也可以手动强制更新: