Files
certd/packages/ui/certd-server/src/plugins/plugin-cert/access/eab-access.ts
T

87 lines
2.3 KiB
TypeScript
Raw Normal View History

2024-10-02 00:55:20 +08:00
import { IsAccess, AccessInput, BaseAccess } from "@certd/pipeline";
import * as acme from "@certd/acme-client";
2024-07-04 01:14:09 +08:00
@IsAccess({
name: "eab",
2024-07-04 02:22:52 +08:00
title: "EAB授权",
2024-07-04 01:14:09 +08:00
desc: "ZeroSSL证书申请需要EAB授权",
2024-11-30 01:57:09 +08:00
icon: "ic:outline-lock",
2024-07-04 01:14:09 +08:00
})
2024-10-02 00:55:20 +08:00
export class EabAccess extends BaseAccess {
@AccessInput({
title: "EAB类型",
component: {
name: "a-select",
options: [
{ value: "google", label: "Google(免费)", icon: "flat-color-icons:google" },
{ value: "zerossl", label: "ZeroSSL(免费)", icon: "emojione:digit-zero" },
{ value: "litessl", label: "litessl(免费)", icon: "roentgen:free" },
{ value: "sslcom", label: "SSL.com(仅主域名和www免费)", icon: "la:expeditedssl" },
],
},
helper: "请选择EAB类型",
required: true,
encrypt: false,
})
eabType = "";
2024-07-04 01:14:09 +08:00
@AccessInput({
title: "KID",
component: {
2024-10-15 19:27:55 +08:00
placeholder: "kid / keyId",
2024-07-04 01:14:09 +08:00
},
2025-09-04 23:42:03 +08:00
helper: "EAB KID google的叫 keyIdssl.com的叫Account/ACME Key",
2024-07-04 01:14:09 +08:00
required: true,
2024-08-27 13:46:19 +08:00
encrypt: true,
2024-07-04 01:14:09 +08:00
})
kid = "";
@AccessInput({
title: "HMACKey",
component: {
2024-10-15 19:27:55 +08:00
placeholder: "HMAC Key / b64MacKey",
2024-07-04 01:14:09 +08:00
},
2024-10-15 19:27:55 +08:00
helper: "EAB HMAC Key google的叫b64MacKey",
2024-07-04 01:14:09 +08:00
required: true,
2024-08-27 13:46:19 +08:00
encrypt: true,
2024-07-04 01:14:09 +08:00
})
hmacKey = "";
@AccessInput({
title: "email",
component: {
placeholder: "绑定一个邮箱",
},
rules: [{ type: "email", message: "请输入正确的邮箱" }],
helper: "绑定一个邮箱,避免失效",
2024-11-25 18:26:23 +08:00
required: true,
})
email = "";
@AccessInput({
title: "ACME账号私钥",
component: {
name: "refresh-input",
action: "GenerateAccountKey",
buttonText: "刷新",
successMessage: "账号私钥已刷新,请保存授权配置",
},
required: true,
helper: "如果修改了KID,请点击刷新重新生成账号私钥\n注意:google的EAB只能生成一次账号私钥,更新私钥需要获取一个新的EAB授权",
encrypt: true,
})
accountKey = "";
async onGenerateAccountKey() {
if (!this.kid) {
throw new Error("请先填写KID");
}
const key = await acme.crypto.createPrivateKey(2048);
return JSON.stringify({
kid: this.kid,
privateKey: key.toString(),
});
}
2024-07-04 01:14:09 +08:00
}
new EabAccess();