详细可以参考官方文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
首先要先获取解析域名网站账户中的API,我使用的是Cloudflare
- 首先登录cf账号,进入右上角的
My Profile
- 然后进入
API Tokens
,点击Create Tokens
新建一个Tokens,创建API令牌,
此处注意Permissions要2条,Zone.Zone和Zone.DNS,权限为Edit可编辑,Resources设置为All zones。
- 紧接着在API页面中,下面的Global API KEY 也要用到,他是
CF_KEY
-
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje" export CF_Email="xxxx@sss.com" export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje" export CF_Account_ID="xxxxxxxxxxxxx"
把他们写好分别在终端中输入,id就是cf页面中的32位字符
-
acme.sh --issue --dns dns_cf -d example.com -d www.example.com
运行,等待即可。
- 该
CF_Key
和CF_Email
或CF_Token
和CF_Account_ID
将被保存~/.acme.sh/account.conf
,需要时会被重用。 -
copy/安装 证书
-
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
acme.sh --installcert -d domain.com \
--key-file /usr/local/nginx/conf/ssl/www.domain.cn.key \
--fullchain-file /usr/local/nginx/conf/ssl/www.domain.cn.cer \
--reloadcmd "service nginx reload"
(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)
–installcert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效.
参考文章:https://www.cnblogs.com/xiaoyige/p/12667640.html