From 433e98b6450fa7d0491151f159e432bf3dfe4feb Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sat, 31 Jan 2026 02:54:33 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=BD=93ip=E8=AF=81=E4=B9=A6=E5=A4=A9?= =?UTF-8?q?=E6=95=B0=E5=A4=AA=E5=B0=8F=E6=97=B6=EF=BC=8C=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9B=B4=E6=96=B0=E5=A4=A9=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E6=AF=8F=E6=AC=A1=E8=BF=90=E8=A1=8C=E9=83=BD?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E7=94=B3=E8=AF=B7ip=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin-cert/plugin/cert-plugin/apply.ts | 2 +- .../plugin-cert/plugin/cert-plugin/base.ts | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/apply.ts b/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/apply.ts index 42d1afba3..562d3bb1e 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/apply.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/apply.ts @@ -90,7 +90,7 @@ const preferredChainMergeScript = (() => { desc: "免费通配符域名证书申请,支持多个域名打到同一个证书上", default: { input: { - renewDays: 18, + renewDays: 15, forceUpdate: false, }, strategy: { diff --git a/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/base.ts b/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/base.ts index 5a6afce65..2392c04d5 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/base.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cert/plugin/cert-plugin/base.ts @@ -121,7 +121,7 @@ export abstract class CertApplyBasePlugin extends CertApplyBaseConvertPlugin { return null; } - const ret = this.isWillExpire(oldCert.expires, this.renewDays); + const ret = this.isWillExpire(oldCert, this.renewDays); if (!ret.isWillExpire) { this.logger.info(`证书还未过期:过期时间${dayjs(oldCert.expires).format("YYYY-MM-DD HH:mm:ss")},剩余${ret.leftDays}天`); return oldCert; @@ -135,13 +135,27 @@ export abstract class CertApplyBasePlugin extends CertApplyBaseConvertPlugin { * @param expires * @param maxDays */ - isWillExpire(expires: number, maxDays = 20) { - if (expires == null) { + isWillExpire(cert: CertReader, maxDays = 15) { + const expires = cert.expires; + if (expires == null) { throw new Error("过期时间不能为空"); } - // 检查有效期 + const begin = dayjs(cert.detail?.notBefore ) + + //证书总天数 + const totalDays = Math.floor((expires - begin.valueOf()) / (1000 * 60 * 60 * 24)); + // 检查有效期 const leftDays = Math.floor((expires - dayjs().valueOf()) / (1000 * 60 * 60 * 24)); - this.logger.info(`证书剩余天数:${leftDays}`); + this.logger.info(`证书有效期剩余天数:${leftDays}`); + if(totalDays < maxDays){ + this.logger.warn(`当前更新到期前天数为${maxDays},证书总天数${totalDays},总天数小于更新到期前天数`); + maxDays = Math.floor(totalDays/2); + if(maxDays < 2){ + maxDays = 2; + } + this.logger.warn(`为避免每次运行都更新证书,更新天数自动减半,调整为${maxDays}`); + } + return { isWillExpire: leftDays <= maxDays, leftDays,