fix: 某些证书提供商的证书确实commonName导致无法转换证书的问题

pull/436/head
xiaojunnuo 2025-06-06 13:53:05 +08:00
parent 2b8ea857f0
commit ac87bc57e9
1 changed files with 19 additions and 6 deletions

View File

@ -89,7 +89,10 @@ export class CertReader {
getAllDomains() { getAllDomains() {
const { detail } = this.getCrtDetail(); const { detail } = this.getCrtDetail();
const domains = [detail.domains.commonName]; const domains = [];
if (detail.domains?.commonName) {
domains.push(detail.domains.commonName);
}
domains.push(...detail.domains.altNames); domains.push(...detail.domains.altNames);
//去重 //去重
return uniq(domains); return uniq(domains);
@ -102,12 +105,23 @@ export class CertReader {
static getMainDomain(crt: string) { static getMainDomain(crt: string) {
const { detail } = CertReader.readCertDetail(crt); const { detail } = CertReader.readCertDetail(crt);
return detail.domains.commonName; return CertReader.getMainDomainFromDetail(detail);
} }
getMainDomain() { getMainDomain() {
const { detail } = this.getCrtDetail(); const { detail } = this.getCrtDetail();
return detail.domains.commonName; return CertReader.getMainDomainFromDetail(detail);
}
static getMainDomainFromDetail(detail: CertificateInfo) {
let domain = detail?.domains?.commonName;
if (domain == null) {
domain = detail?.domains?.altNames?.[0];
}
if (domain == null) {
domain = "unknown";
}
return domain;
} }
saveToFile(type: "crt" | "key" | "pfx" | "der" | "oc" | "one" | "ic" | "jks", filepath?: string) { saveToFile(type: "crt" | "key" | "pfx" | "der" | "oc" | "one" | "ic" | "jks", filepath?: string) {
@ -179,8 +193,7 @@ export class CertReader {
} }
buildCertFileName(suffix: string, applyTime: any, prefix = "cert") { buildCertFileName(suffix: string, applyTime: any, prefix = "cert") {
const detail = this.getCrtDetail(); let domain = this.getMainDomain();
let domain = detail.detail.domains.commonName;
domain = domain.replaceAll(".", "_").replaceAll("*", "_"); domain = domain.replaceAll(".", "_").replaceAll("*", "_");
const timeStr = dayjs(applyTime).format("YYYYMMDDHHmmss"); const timeStr = dayjs(applyTime).format("YYYYMMDDHHmmss");
return `${prefix}_${domain}_${timeStr}.${suffix}`; return `${prefix}_${domain}_${timeStr}.${suffix}`;
@ -188,7 +201,7 @@ export class CertReader {
buildCertName() { buildCertName() {
let domain = this.getMainDomain(); let domain = this.getMainDomain();
domain = domain.replaceAll("*", "_").replaceAll("*", "_"); domain = domain.replaceAll(".", "_").replaceAll("*", "_");
return `${domain}_${dayjs().format("YYYYMMDDHHmmssSSS")}`; return `${domain}_${dayjs().format("YYYYMMDDHHmmssSSS")}`;
} }
} }