acme.sh实现ssl证书自动化续期
简介
acme.sh
是一个用 Shell 脚本编写的轻量级、功能强大的 ACME 客户端,用于从 Let’s Encrypt 或其他兼容 ACME 协议的证书颁发机构(CA)自动申请和续期免费的 TLS/SSL 证书。
本文根据本站的配置进行的实践过程
1.安装acme.sh
1.1 安装 acme.sh 并设置邮箱用来接受重要通知,如证书快过期未更新通知
1 | curl https://get.acme.sh | sh -s email=xxx@qq.com |
1.2 可能出现问题
A)问题:
1 | curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 0 ms: Couldn't connect to server |
处理方案:源码下载运行
1 | git clone https://gitee.com/neilpang/acme.sh.git |
B)问题:
可能出现报错command not found
1 | -bash: acme.sh: command not found |
处理方案:重连终端后查看是否成功
1 | acme.sh --version |
2.申请证书(自动更新)
默认为zerossl, ‘–server letsencrypt’表示指定证书申请服务器为 Let’s Encrypt
,更新证书的天数,默认值为 60 天,
注意:泛域名需要dns模式验证,本次采用webroot验证,每个二级域名都需要
–days xxx 为自动更新证书的时间
–webroot /etc/nginx/cert 指定验证文件根目录
默认为zerossl(-d 来配置多个域名)
1 | acme.sh --issue -d brightchen.top -d www.brightchen.top -d dify.brightchen.top -d alist.brightchen.top -d minio.brightchen.top -d minioweb.brightchen.top -d waline.brightchen.top --webroot /etc/nginx/cert --days 10 |
letsencrypt证书(我的目前使用)
1 | acme.sh --issue --server letsencrypt -d brightchen.top -d www.brightchen.top-d um.brightchen.top --webroot /etc/nginx/cert --days 30 |
增加域名的更新使用(注意letsencrypt每周最多5次) 加 --force
来更新
比如需要增加新的二级域名cms.brightchen.top
1 | acme.sh --issue --server letsencrypt -d brightchen.top -d www.brightchen.top -d um.brightchen.top -d cms.brightchen.top --webroot /etc/nginx/cert --days 30 --force |
3.创建目录证书相关,验证文件相关目录
可以自定义其他目录
1 | mkdir -p /etc/nginx/keystore/brightchen.top |
4.证书文件生成
1 | acme.sh --install-cert -d brightchen.top \ |
ps:docker exec -it nginx nginx -s reload 可以代替docker restart nginx
5.配置nginx 指定验证文件根目录
1 | # ACME 请求优先处理 |
6.其他方案:自定义临时证书使用(不安全的ssl协议)
nginx 配置conf.d文件下创建default.conf
openssl
: 调用 OpenSSL 工具。req
: 使用 X.509 证书生成和处理选项。-x509
: 直接输出自签名证书而不是生成一个证书签名请求。-nodes
: 不加密私钥(省略此参数会提示输入私钥密码)。-days 365
: 证书有效期为 365 天。-newkey rsa:2048
: 创建一个新的 2048 位 RSA 密钥对。-keyout /etc/nginx/keystore/brightchen.top/key.pem
: 指定私钥文件的输出路径。- `-out /etc/nginx/keystore/brightchen.top/fullchain.cer: 指定证书文件的输出路径。
1
2
3
4
5
6
7
8sudo openssl req \
-x509 \
-nodes \
-days 365 \
-newkey rsa:4096 \
-keyout /etc/nginx/keystore/brightchen.top/key.pem \
-out /etc/nginx/keystore/brightchen.top/fullchain.cer
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Bright Chen!
评论