使用 acme.sh 申请、续期 ssl 证书
文章目录
acme.sh
- acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.
- github:https://github.com/acmesh-official/acme.sh
- PS:由于 letsencrypt 证书在国内解析地址存在被污染的问题,在 苹果手机H5 场景下存在认证证书慢的情况
安装
- 通过 git 包安装
- PS:运行脚本不支持 sudo 调用,如 nginx 目录需 root 权限操作,则此工具需使用 root 安装
|
|
Nginx 基于 http 通过文件验证申请证书
- https://www.rmedgar.com/blog/using-acme-sh-with-nginx/
- 申请流程
- 脚本会在站点目录下的 .well-known/acme-challenge 的目录中随机生成一个证书文件
- 要保证通过 http://域名/.well-known/acme-challenge/随机证书文件 能够正常访问文件
- 将证书移动到指定目录,并在 nginx 中进行配置
配置 nginx 转发规则
- 在 Nginx 要配置 ssl 证书的监听 server 下配置转发规则
|
|
申请证书
- 申请成功后,证书文件会放在 .acme.sh/example.domain.com 下
|
|
拷贝证书
- 手动拷贝(不推荐)
|
|
- 脚本拷贝
|
|
- PS:
- 由于手动拷贝,目录下 example.domain.com.conf 文件中并未指定路径、重启命令等,会导致续期失败.
- nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/example.domain.com.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。
- 如果替换完证书,推荐使用 systemctl force-reload openresty/nginx 重载配置
nginx 配置 ssl 证书
|
|
续期
- 配置好证书后,脚本会在 crontab 下创建一个定时任务,用于自动续期
|
|
其他
删除证书
- 查看已有证书
|
|
- 删除证书
|
|
文章作者 Xiang
上次更新 2023-07-10