B
BMC 商业授权运营控制台
LICENSE OPERATIONS · v1.0

令牌仅保存在本浏览器 sessionStorage,关闭标签页即失效; 不会写入 URL、Cookie 或任何服务端日志。若尚未配置,请在服务器上执行 php keyring-import.php --hash-token '你的令牌' 并把输出粘进 config.php。

{{ loginError }}
B
商业授权运营控制台
宝塔 LNMP · RS256 签发 · Ed25519 CRL
{{ healthText }} 签发 {{ stats ? stats.totals.issued : '—' }} 吊销 {{ stats ? stats.totals.revoked : '—' }}
正在拉取运营数据…
未能读取统计数据。请检查数据库是否已导入 install.sql、config.php 的数据库账号是否正确。
激活码签发
签发动作会真实入账并写入 bmc_licenses,请核对后提交。

免费通道下套餐 / 额度 / 有效期由服务端强制覆盖为 {{ freeTerms.planId }} · {{ freeTerms.envLimit }} 环境 · {{ freeTerms.days }} 天, 下方对应控件已锁定。

{{ form.env_limit }}
1 {{ sliderMax }}
{{ quotaWarning }}
激活码(明文 JWT)
租户
{{ issued.claims.tenant_id }}
套餐 / 生效额度
{{ issued.claims.plan }} / {{ issued.claims.env_limit }}
签名位 kid
{{ issued.kid }}
到期时间
{{ fmtDate(issued.claims.exp) }}
jti{{ issued.claims.jti }}
iss / aud{{ issued.claims.iss }} / {{ issued.claims.aud }}
iat → exp{{ issued.claims.iat }} → {{ issued.claims.exp }}(秒)
⚠ {{ note }}
套餐对照表(服务端与客户端必须一致)
id 名称 环境上限
{{ id }} {{ info.name }} {{ info.environmentLimit === null ? '∞' : info.environmentLimit }}
租户 ID 唯一 jti 套餐 / 额度 到期时间 状态 操作
加载中…
没有符合条件的记录
{{ row.tenant_id }}
{{ fmtDate(row.iat) }} · {{ row.kid }}
{{ row.jti }}
{{ row.planName }}
{{ row.plan }} · {{ row.env_limit }} 环境
{{ fmtDate(row.exp) }}
{{ fmtRelative(row.exp) }}
{{ row.revoked ? '🔴 已吊销' : (row.expired ? '⏳ 已过期' : '🟢 正常') }}
{{ row.revokeReason }} · {{ fmtDate(row.revokedAt) }}
已吊销
共 {{ ledger.total }} 条 · 第 {{ ledger.page }} / {{ ledger.pageCount || 1 }} 页

提示:列表默认**不返回**完整激活码(凭据会被浏览器缓存与代理日志留存),点「复制」时才单次索取。 吊销后客户端最长需一个 CRL 周期(当前 {{ stats ? Math.round(stats.crl.ttlSeconds / 3600) : 24 }} 小时)才会生效。

RSA 签发密钥环
带 ★ 的是当前主签发键。轮换期应保留旧键在线,否则老凭证会被 LICENSE_UNKNOWN_KID 拦下。
加载中…
密钥环为空。请在服务器执行:php keyring-import.php --activate
{{ key.active ? '★ ' : '' }}{{ key.kid }} {{ key.active ? '主签发键' : '备用' }}
fkid{{ key.fkid }}
算法{{ key.algorithm }}
入库{{ key.created_at }}
私钥 已加封(AES-256-GCM)
⚠ 登记指纹与公钥实测指纹不一致,该行可能被手工修改过,请重新导入。
{{ key.note }}
CRL 签名密钥(Ed25519 · 与 JWT 是两把独立钥匙)
签名模式{{ crlInfo.signMode }}
sodium 扩展 {{ crlInfo.sodiumReady ? '已启用' : '未启用(Ed25519 不可用)' }}
私钥路径{{ crlInfo.keyFile || '—' }}
自检 {{ crlInfo.selftest.ok ? ('通过 · ' + crlInfo.selftest.signatureBytes + ' 字节签名') : '失败' }}
{{ crlInfo.selftest.reason }}
客户端内置锚点对照
内置 kidrsa-f75a8095
内置 fkidf75a8095250c310e
当前主键 kid {{ activeKid || '—' }}

当前主键与内置锚点不一致时,签出的凭证在现役客户端上会被 LICENSE_UNKNOWN_KID 拒收。 正解是先用 npm run keys:embed 把新公钥编译进客户端, 再切换主键 —— **不要**在客户端放宽校验。

BMC LICENSE OPERATIONS CONSOLE · RS256 签发 / Ed25519 吊销列表 / 租户物理沙箱
确认远程吊销

吊销后该凭证会进入在线黑名单,客户端拉到列表后将被拒绝启动环境。此操作**不可撤销**。

租户{{ revokeTarget.tenant_id }}
jti{{ revokeTarget.jti }}
套餐{{ revokeTarget.planName }} · {{ revokeTarget.env_limit }} 环境

白名单:{{ reasonOptions.map(r => r.value).join(' / ') }}

{{ toast.tone === 'ok' ? '●' : (toast.tone === 'err' ? '▲' : '◆') }}
{{ toast.title }}
{{ toast.detail }}