type
status
date
slug
summary
tags
category
icon
password
acme.sh 实现了
acme
协议, 可以从 letsencrypt 生成免费的证书.1. 安装 acme.sh
安装很简单, 一个命令:
普通用户和 root 用户都可以安装使用. 安装过程进行了以下几步:
- 把 acme.sh 安装到你的 home 目录下:
并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用:
alias acme.sh=~/.acme.sh/acme.sh
- 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中:
~/.acme.sh/
2. 配置dns解析api(以腾讯云dnspod为例)
注意Token 值只会在创建时显示一次,请记得备份。 建议开启 IP 白名单,防止 Token 泄露后产生损失。
3. 生成证书
4. copy/安装 证书
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下:
~/.acme.sh/
, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.正确的使用方法是使用
--install-cert
命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:Nginx example:
请确保已经新建了目录ssl
、example.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解决
- 作者:IMyself
- 链接:https://blog.lmyself.top//article/f7b78c79-bf4f-49b7-a759-24d3785a11cf
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章