更多方式请查看: letsencrypt/client-options
1. 安装 acme.sh
#安装: curl https://get.acme.sh | sh # 注:上面命令执行后会将 acme.sh 工具安装到 ~/.acme.sh/ 目录下,以后所有的配置默认也在这个目录下 # 设置别名 alias: alias acme.sh=~/.acme.sh/acme.sh # 自动为你创建计划任务, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书. # 更高级的安装选项请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-install
2. 生成证书
# acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证 # 这里仅介绍 DNS 方式 # DNS 验证方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. # 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。 # acme.sh 支持直接使用主流 DNS 提供商的 API 接口来完成域名验证以及一些相关操作 具体参考 dnsapi 链接 # 至于要哪个DNS提供商的API, 取决于你是在哪里买的域名 # 不同DNS提供商的使用方法,请参考 wiki dnsapi # 比如我 的域名是在 腾讯云购买的,那么我将使用 dnspod 为例 : # 首先访问 dnspod.cn # 在 用户中心->安全设置, 找到 API Token 选项栏,在这里可以生成你的 ID和Token (生成后要保存下来,后面会用到) # 在命令行界面 将 上面生成的 ID和Token导入环境变量里 export DP_Id="生成的ID" export DP_Key="生成的Token" # 然后可以直接使用如下命令发起申请: acme.sh --issue --dns dns_dp -d 'example.com' -d '*.example.com' # 在执行完成后,上面导入的环境变量 DP_Id 和 DP_Key 将被保存在 ~/.acme.sh/account.conf # 命令中 dns_dp 指明使用 腾讯的dns 来生成证书,注意这里第一个域名为顶级域名,后面个为泛域名。泛域名因为有通配符*号,所以建议使用单引号包起来 # 这种方式将自动为你的域名添加一条 txt 解析,验证成功后,这条解析记录会被删除,所以对你来说是无感的,就是要等大概要120秒。 # 注意:需要同时添加裸域名及泛域名的话,请注意要将非泛域名的域名放在前面,否则可能会遇到一些问题。 # 证书生成成功后,默认保存在 ~/.acme.sh/example.com 对应的目录中。 # 若想自定义证书目录,可加上 -w 参数 acme.sh --issue --dns dns_dp -d 'example.com' -w /etc/letsencrypt/example.com # 以下是整个生成过程的截图