概述

去版权授权令牌(license token)是一个紧凑的、可离线校验的字符串,由主站使用 Ed25519 私钥签名,KingCMS X1 使用对应公钥校验。令牌不包含任何联系方式,仅用于证明某个根域名已获得去版权授权。

编码格式

令牌由两段组成,以英文句点 . 分隔:

base64url(payload_json) + "." + base64url(ed25519_signature)
  • 两段均使用 base64url 无填充(RFC 4648 §5,即 base64.RawURLEncoding)。
  • payload_json 是 UTF-8 编码的 JSON 对象,字段顺序固定(见下)。
  • ed25519_signature 是对 payload 原始字节(即 JSON 文本本身,而非其 base64 编码)的 Ed25519 签名,长度 64 字节。

载荷字段

字段类型说明
vint令牌版本,当前为 1。
lidstring授权记录 ID(十进制字符串)。
domainstring规范化后的根域名(punycode、小写、无 www.)。
planstring固定为 remove-powered-by。
iatint64签发时间,Unix 秒。
expint64过期时间,Unix 秒。当前恒为 0,表示永久授权、永不过期。

示例载荷(未签名):

{"v":1,"lid":"42","domain":"example.com","plan":"remove-powered-by","iat":1760000000,"exp":0}

签名与校验

  • 签名算法:Ed25519(crypto/ed25519)。私钥为 64 字节,主站从配置的密钥文件加载(base64 标准编码)。
  • 校验步骤:拆分两段 → base64url 解码 → 用公钥对 payload 字节做 ed25519.Verify → 校验通过后再解析 JSON。
  • 公钥为私钥的后 32 字节(priv.Public())。主站不通过 HTTP 接口公开公钥;如需在 X1 中内置公钥,请从部署方获取(由私钥推导),并硬编码到 X1 的校验代码中。

域名匹配规则

令牌中的 domain 是根域名(可注册域,eTLD+1,基于 Public Suffix List 计算)。校验时:

  1. 将 X1 当前站点主机名规范化:小写、去端口、去 www. 前缀、IDN 转 punycode。
  2. 计算其根域名(例如 shop.example.com → example.com;a.b.example.com.cn → example.com.cn)。
  3. 与令牌 domain 做点边界比较:主机名等于根域名,或以 .+根域名 结尾。即一个根域名授权覆盖其全部子域名,但不会误匹配 notexample.com 这类字符串。

因此一个授权对应一个根域名,覆盖其所有子域名。

有效期

当前所有令牌 exp=0,即永久有效。X1 校验时若 exp 非 0 且已过期,应视为无效(为将来兼容保留)。

安全提示

令牌本身不加密,任何人可读取其中的域名与 ID;其安全性来自签名不可伪造。请勿在令牌中放入任何敏感信息。