type
status
date
slug
summary
tags
category
icon
password
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.

1. 安装 acme.sh

安装很简单, 一个命令:
普通用户和 root 用户都可以安装使用. 安装过程进行了以下几步:
  1. 把 acme.sh 安装到你的 home 目录下:
并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh
  1. 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

2. 配置dns解析api(以腾讯云dnspod为例)

notion image
notion image
注意Token 值只会在创建时显示一次,请记得备份。 建议开启 IP 白名单,防止 Token 泄露后产生损失。

3. 生成证书

notion image

4. copy/安装 证书

前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
Nginx example:
请确保已经新建了目录sslexample.com 一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload
Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/<domain>.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。
  • -install-cert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效.
值得注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用。

5. 配置服务器

/usr/local/nginx/snippets 目录下创建代码片段文件 ssl-params.conf 专门拿来配置 SSL 相关的设置,内容如下:
接下来配置 server,通过 include 命令引入 ssl-params.conf
重启nginx

6. 证书自动续期

acme.sh 安装时会使用 cron 创建定时任务, 默认的计划任务是每天 0:00 点检查一次是否需要续期。 定时任务可以通过 crontab -l 命令查看,还可以手动配置:
crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,未设置使用 * 占位,它的格式如下:
minute hour day month week command
具体命令使用说明参考 crontab

其他操作

1、查看已签发证书的域名:
2、移除不需要再次签发证书的域名:
3、强制刷新证书
4、查看已安装证书信息
5、卸载
$ acme.sh --uninstall

nginx Command not found解决

Telegram此号码已被封禁,快速解封的方法,解除this phone number is banned提醒部署开源项目Coze-Discord-Proxy
Loading...
2021-2025IMyself.

IMyself | 前端小萌新~