申请lego证书
侧边栏壁纸
    love love love

  • 累计撰写 13 篇文章
  • 累计收到 0 条评论
  • 今日撰写 0 篇文章

申请lego证书

admin
2026-08-08 / 0 评论 / 3 阅读 / 耗时: 19 ms /

🔐 证书服务器自动续期 & 日志清理全记录

适用环境hi3798mv100(ARM 32 位,ARMv7l)
证书域名*.manv.cn + manv.cn
签发机构:Let's Encrypt(通过 lego + 腾讯云 DNS-01 验证)
最后更新:2026-08-09

一、前置准备:SSH 免密登录

目标:让证书服务器 e.manv.cn免密码 登录博客服务器 y.manv.cn,方便后续自动同步证书。

① 在证书服务器 e.manv.cn 上生成 SSH 密钥

ssh-keygen -t ed25519
# 一路回车即可,默认生成 ~/.ssh/id_ed25519 和 id_ed25519.pub

② 把公钥拷贝到博客服务器 y.manv.cn

# 在 e.manv.cn 上执行
ssh-copy-id root@<y.manv.cn的真实IPv4>

③ 测试免密是否生效

ssh root@<y.manv.cn的真实IPv4>

不用输密码直接登录 = 配置成功


二、安装 lego(注意 ARM 架构别下错)

hi3798mv100ARM 32 位,需要下载 lego_linux_armv6 那个包(armv6 通吃 armv7l):

# 下载(请替换为实际最新版本号)
wget https://github.com/go-acme/lego/releases/download/v4.xx.x/lego_v4.xx.x_linux_armv6.tar.gz

# 解压
tar xzf lego_v4.xx.x_linux_armv6.tar.gz

# 放到系统路径
cp lego /usr/local/bin/

# 验证
lego --version
⚠️ 常见坑:下成 arm64amd64 会在运行时报 Exec format error,务必确认是 armv6

三、首次签发证书

3.1 设置腾讯云 API 密钥

export TENCENTCLOUD_SECRET_ID=<你的腾讯云SecretId>
export TENCENTCLOUD_SECRET_KEY=<你的腾讯云SecretKey>

3.2 执行签发

lego --email 5567374@qq.com --dns tencentcloud \
     -d '*.manv.cn' -d 'manv.cn' run
💡 为什么要加 -d manv.cn
单纯 *.manv.cn 管不了根域 manv.cn 本身。加上这一条,根域 + 泛域名会签进 同一张证书,一张证书全搞定。

3.3 签发完成后证书位置

./.lego/certificates/
├── _.manv.cn.crt        # 证书(含完整链)
├── _.manv.cn.key        # 私钥
└── manv.cn.json         # 账户/订单信息
证书路径取决于你当时 --path 参数,没指定就在当前目录的 .lego/ 下。

四、配置 Nginx 使用证书

server {
    listen 443 ssl;
    server_name manv.cn *.manv.cn;

    ssl_certificate     /etc/nginx/ssl/manv.cn/fullchain.crt;   # 即 _.manv.cn.crt
    ssl_certificate_key /etc/nginx/ssl/manv.cn/manv.cn.key;

    # 推荐补充的安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
}

五、自动续期(重点!别忘了这步)

Let's Encrypt 证书 90 天过期,lego 自带 renew 命令,配合 crontab 即可实现全自动续期,无需重跑 run

5.1 续期命令

lego --email 5567374@qq.com --dns tencentcloud \
     -d '*.manv.cn' -d 'manv.cn' \
     renew --days 30 --reuse-key
--days 30:距过期不足 30 天才执行续期;--reuse-key:复用旧私钥,减少风险。

5.2 写成一键脚本(推荐)

文件/opt/lego/renew-manv.sh

#!/bin/bash
# ============================================================
#  manv.cn 证书自动续期脚本
# ============================================================

export TENCENTCLOUD_SECRET_ID=<你的腾讯云SecretId>
export TENCENTCLOUD_SECRET_KEY=<你的腾讯云SecretKey>

LEGO=/usr/local/bin/lego
CERT_DIR=/opt/lego/.lego/certificates
NGINX_CERT=/etc/nginx/ssl/manv.cn

# 执行续期
$LEGO --email 5567374@qq.com --dns tencentcloud \
      -d '*.manv.cn' -d 'manv.cn' \
      renew --days 30 --reuse-key

# 续期成功才覆盖旧证书 + reload nginx
if [ $? -eq 0 ]; then
    cp "$CERT_DIR/_.manv.cn.crt" "$NGINX_CERT/fullchain.crt"
    cp "$CERT_DIR/_.manv.cn.key" "$NGINX_CERT/manv.cn.key"
    nginx -s reload
    echo "[$(date)] 证书续期成功,nginx 已 reload"
else
    echo "[$(date)] 证书续期失败,请检查日志"
fi

赋执行权限:

chmod +x /opt/lego/renew-manv.sh

5.3 加入 crontab

crontab -e

添加以下行:

0 2 * * * /opt/lego/renew-manv.sh >> /var/log/lego-renew.log 2>&1

效果:每天凌晨 2 点检查一次 → 距过期 >30 天就啥也不干 → <30 天自动续签 + 拷证书 + reload nginx。


六、清理日志(可选)

如果证书目录或日志文件膨胀,可定期清理:

# 清理 lego 旧日志(保留最近 7 天)
find /var/log/lego* -type f -mtime +7 -delete

# 清理 .lego 下的临时文件
find /opt/lego/.lego -type f -name "*.tmp" -delete

📋 速查清单

步骤关键命令状态
① SSH 免密ssh-copy-id root@y.manv.cn
② 安装 legocp lego /usr/local/bin/
③ 首次签发lego ... run
④ Nginx 配置ssl_certificate ...
⑤ 续期脚本/opt/lego/renew-manv.sh
⑥ Crontab0 2 * * * ...

🔒 安全提醒:脚本里的 TENCENTCLOUD_SECRET_KEY 是敏感信息,建议将脚本权限设为 chmod 700,避免被其他用户读取。
你认为这篇文章怎么样?
  • 0
    点赞
  • 0
  • 0
  • 0
    滑稽
  • 0
    尴尬
  • 0
    睡觉

评论 (0)

取消
头像
邮箱:
I P:
互动: