diff --git a/packages/plugins/plugin-lib/src/cert/cert-reader.ts b/packages/plugins/plugin-lib/src/cert/cert-reader.ts index df2d86edb..c4071ca8f 100644 --- a/packages/plugins/plugin-lib/src/cert/cert-reader.ts +++ b/packages/plugins/plugin-lib/src/cert/cert-reader.ts @@ -2,6 +2,7 @@ import fs from "fs"; import os from "os"; import path from "path"; import { CertificateInfo, crypto } from "@certd/acme-client"; +import cryptoLib from "crypto"; import { ILogger } from "@certd/basic"; import dayjs from "dayjs"; import { uniq } from "lodash-es"; @@ -119,9 +120,28 @@ export class CertReader { const detail = crypto.readCertificateInfo(crt.toString()); const effective = detail.notBefore; const expires = detail.notAfter; + const fingerprints = CertReader.getFingerprintX509(crt); + // @ts-ignore + detail.fingerprints = fingerprints; return { detail, effective, expires }; } + static getFingerprintX509(crt: string) { + try { + // 创建X509Certificate实例 + const cert = new cryptoLib.X509Certificate(crt); + // 获取指纹 + return { + fingerprint: cert.fingerprint, + fingerprint256: cert.fingerprint256, + fingerprint512: cert.fingerprint512, + }; + } catch (error) { + console.error("处理证书失败:", error.message); + return null; + } + } + getAllDomains() { const { detail } = this.getCrtDetail(); const domains = []; diff --git a/packages/ui/certd-client/src/views/certd/pipeline/api.ts b/packages/ui/certd-client/src/views/certd/pipeline/api.ts index 1c84a0842..6e07abf6c 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/api.ts +++ b/packages/ui/certd-client/src/views/certd/pipeline/api.ts @@ -154,6 +154,7 @@ export type CertInfo = { ic: string; der: string; pfx: string; + detail: any; }; export async function GetCert(pipelineId: number): Promise { diff --git a/packages/ui/certd-client/src/views/certd/pipeline/cert-view.vue b/packages/ui/certd-client/src/views/certd/pipeline/cert-view.vue index afbb7e76d..555171342 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/cert-view.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/cert-view.vue @@ -1,12 +1,47 @@