type
status
date
slug
summary
tags
category
icon
password
下面例子中,域名是托管在阿里云上,所以采用的阿里云DNS申请方式,若其它申请方式可见 acme.sh其它平台申请方式
✨ 安装acme.sh
首先需要安装acme.sh脚本:
安装完成后,退出并重新登录终端,或执行以下命令使环境变量生效:
🤗 配置阿里云DNS API
acme.sh支持通过阿里云API自动添加DNS记录。需要先创建AccessKey:
- 登录阿里云控制台
- 进入AccessKey管理页面
- 创建AccessKey并保存AccessKey ID和AccessKey Secret
然后设置环境变量:
也可以将这些变量永久保存:
📎 申请证书(阿里云方式)
使用DNS API模式申请证书:
如果需要,可以指定DNS API选项:
如果之前已经安装过多域名证书,可以先卸载:
🗨️ 安装证书到Nginx
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方。
注意, 默认生成的证书都放在安装目录下:
~/.acme.sh/
, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化。正确的使用方法是使用
--install-cert
命令,并指定目标位置, 然后证书文件会被copy到相应的位置若nginx是原始安装(安装包方式),安装证书命令如下
若nginx采用docker安装,安装证书命令如下
如果使用docker-compose,则可以这样设置:
默认情况下,证书每 60 天更新一次(可自定义)。更新证书后,Apache 或者 Nginx 服务会通过
reloadcmd
传递的命令自动重载配置。注意:
reloadcmd
非常重要。证书会自动申请续签,但是如果没有正确的 reloadcmd
命令,证书可能无法被重新应用到 Apache 或者 Nginx,因为配置没有被重载。🎗️ 查看已安装证书信息
会输出如下内容:
📈 更新证书
目前证书每 60 天自动更新,无需任何操作。
但是也可以强制续签证书:
🍁 关于修改 reloadcmd
目前修改
reloadcmd
没有专门的命令,可以通过重新安装证书来实现修改 reloadcmd
的目的。此外,安装证书后,相关信息是保存在
~/.acme.sh/example.com/example.conf
文件下的,内容就是 acme.sh --info -d example.com
输出的信息,不过 reloadcmd
在文件中使用了 Base64 编码。理论上可以通过直接修改该文件来修改 ReloadCmd
,且修改时,无需 Base64 编码,直接写命令原文 acme.sh
也可以识别。不过,由于
example.conf
文件的位置和内容格式以后可能会改变,且 example.conf
一直都是内部使用,后续也有可能会改为用 SQLite 或者 MySQL 格式存储. 所以一般不建议自己修改。🐚 更新 acme.sh
acmd.sh 还在不断开发中,因此强烈建议保持并使用最新的版本。
升级 acme.sh 到最新版:
如果你不想手动升级,可以开启自动升级:
之后,acme.sh 就会自动保持更新了。
你也可以随时关闭自动更新:
🥣 出错怎么办
如果出错,请添加
--debug
参数输出详细的调试信息:或者输出更详细的信息:
请参考:参考链接
在 DNS 验证模式下如果 debug 中出现诸如
timed out
等字样可能是因为 GFW
HTTP(S) Proxy 环境变量。(请按照自己实际设定修改)🎢 更多高级的用法
上述内容并非完全的使用说明,还有很多高级的功能,更高级的用法请参看 wiki 页面:https://github.com/acmesh-official/acme.sh/wiki/
- 作者:十十乙
- 链接:https://shishiyi.cc/article/19d05292-33af-809c-ad7c-ef3ee487a245
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章