perf: 证书申请支持letencrypt profile选项

pull/436/head
xiaojunnuo 2025-06-06 15:12:24 +08:00
parent ac87bc57e9
commit 2eb0e54909
6 changed files with 75 additions and 42 deletions

View File

@ -75,6 +75,9 @@ export default async (client, userOpts) => {
log("[auto] Placing new certificate order with ACME provider");
const orderPayload = { identifiers: uniqueDomains.map((d) => ({ type: "dns", value: d })) };
if (opts.profile && client.sslProvider === 'letsencrypt' ){
orderPayload.profile = opts.profile;
}
const order = await client.createOrder(orderPayload);
const authorizations = await client.getAuthorizations(order);

View File

@ -90,10 +90,12 @@ const defaultOpts = {
*/
class AcmeClient {
sslProvider
constructor(opts) {
if (!Buffer.isBuffer(opts.accountKey)) {
opts.accountKey = Buffer.from(opts.accountKey);
}
this.sslProvider = opts.sslProvider;
this.opts = { ...defaultOpts, ...opts };
this.backoffOpts = {

View File

@ -66,6 +66,7 @@ export interface ClientAutoOptions {
challengePriority?: string[];
preferredChain?: string;
signal?: AbortSignal;
profile?:string;
}
export class Client {

View File

@ -327,8 +327,9 @@ export class AcmeService {
csrInfo: any;
isTest?: boolean;
privateKeyType?: string;
profile?: string;
}): Promise<CertInfo> {
const { email, isTest, csrInfo, dnsProvider, domainsVerifyPlan } = options;
const { email, isTest, csrInfo, dnsProvider, domainsVerifyPlan, profile } = options;
const client: acme.Client = await this.getAcmeClient(email, isTest);
let domains = options.domains;
@ -400,6 +401,7 @@ export class AcmeService {
return await this.challengeRemoveFn(authz, challenge, keyAuthorization, recordReq, recordRes, dnsProvider, httpUploader);
},
signal: this.options.signal,
profile,
});
const crtString = crt.toString();

View File

@ -248,6 +248,30 @@ export class CertApplyPlugin extends CertApplyBasePlugin {
})
privateKeyType!: PrivateKeyType;
@TaskInput({
title: "证书配置",
value: "classic",
component: {
name: "a-select",
vModel: "value",
options: [
{ value: "classic", label: "经典classic" },
{ value: "tlsserver", label: "TLS服务器tlsserver" },
{ value: "shortlived", label: "短暂的shortlived" },
],
},
helper: "如无特殊需求,默认即可",
required: false,
mergeScript: `
return {
show: ctx.compute(({form})=>{
return form.sslProvider === 'letsencrypt'
})
}
`,
})
certProfile!: string;
@TaskInput({
title: "使用代理",
value: false,
@ -395,6 +419,7 @@ export class CertApplyPlugin extends CertApplyBasePlugin {
csrInfo,
isTest: false,
privateKeyType: this.privateKeyType,
profile: this.certProfile,
});
const certInfo = this.formatCerts(cert);

View File

@ -46,7 +46,7 @@ importers:
packages/core/acme-client:
dependencies:
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../basic
'@peculiar/x509':
specifier: ^1.11.0
@ -207,10 +207,10 @@ importers:
packages/core/pipeline:
dependencies:
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../basic
'@certd/plus-core':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../pro/plus-core
dayjs:
specifier: ^1.11.7
@ -415,7 +415,7 @@ importers:
packages/libs/lib-k8s:
dependencies:
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
'@kubernetes/client-node':
specifier: 0.21.0
@ -455,16 +455,16 @@ importers:
packages/libs/lib-server:
dependencies:
'@certd/acme-client':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../pro/plus-core
'@midwayjs/cache':
specifier: ~3.14.0
@ -607,16 +607,16 @@ importers:
packages/plugins/plugin-cert:
dependencies:
'@certd/acme-client':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../plugin-lib
'@google-cloud/publicca':
specifier: ^1.3.0
@ -695,10 +695,10 @@ importers:
specifier: ^3.787.0
version: 3.810.0(aws-crt@1.26.2)
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/pipeline
'@kubernetes/client-node':
specifier: 0.21.0
@ -786,19 +786,19 @@ importers:
packages/pro/commercial-core:
dependencies:
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
'@certd/lib-server':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/lib-server
'@certd/pipeline':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/pipeline
'@certd/plugin-plus':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../plugin-plus
'@certd/plus-core':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../plus-core
'@midwayjs/core':
specifier: ~3.20.3
@ -883,22 +883,22 @@ importers:
specifier: ^1.0.2
version: 1.0.3
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
'@certd/lib-k8s':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/lib-k8s
'@certd/pipeline':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../plus-core
ali-oss:
specifier: ^6.21.0
@ -1001,7 +1001,7 @@ importers:
packages/pro/plus-core:
dependencies:
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
dayjs:
specifier: ^1.11.7
@ -1291,10 +1291,10 @@ importers:
version: 0.1.3(zod@3.24.4)
devDependencies:
'@certd/lib-iframe':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/lib-iframe
'@certd/pipeline':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/pipeline
'@rollup/plugin-commonjs':
specifier: ^25.0.7
@ -1477,46 +1477,46 @@ importers:
specifier: ^3.705.0
version: 3.810.0(aws-crt@1.26.2)
'@certd/acme-client':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/basic
'@certd/commercial-core':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../pro/commercial-core
'@certd/cv4pve-api-javascript':
specifier: ^8.4.1
version: 8.4.1
'@certd/jdcloud':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/lib-jdcloud
'@certd/lib-huawei':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/lib-huawei
'@certd/lib-k8s':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/lib-k8s
'@certd/lib-server':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/lib-server
'@certd/midway-flyway-js':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../libs/midway-flyway-js
'@certd/pipeline':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../plugins/plugin-lib
'@certd/plugin-plus':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../pro/plugin-plus
'@certd/plus-core':
specifier: ^1.34.11
specifier: ^1.35.0
version: link:../../pro/plus-core
'@huaweicloud/huaweicloud-sdk-cdn':
specifier: ^3.1.120