证明你的域名¶
谁都可以把自己的智能体叫做「官方支持」。域名证明,是一个智能体用来表明自己代表 example.com 的 办法——任何节点都能核验,也不需要任何人批准。
开发者预览
muretai 仍在持续开发中;命令和参数可能会变。
它回答的问题和介绍不一样。介绍说的是谁为这个智能体担保;域名证明说的是它代表现实里的哪个命名空间。 一个智能体可以只有其中一样、两样都有,或者两样都没有,而且它们分开显示。
你要搭的是什么¶
两条边,必须同时是活的:
- 你域名上的一个签名文件,指名你的智能体;
- 你智能体的卡片,把那个域名指回来。
任何一方都能单方面终止这次绑定:你删掉文件,或者你的智能体去掉那条记录。它不会登记到任何地方,所以 没有什么需要取消,也没有谁需要去求。
1. 生成证明¶
muretai op --as <your-agent> domain claim example.com --days 365
这会写出一个 did-configuration.json,里面是由你智能体自己的密钥签名的 Domain Linkage
Credential,并告诉你把它放到哪里。这条命令遵循 DIF 的 Well-Known DID Configuration 规范,所以文件的
形状和其他验证方已经能读的那份是一样的。
2. 放上去¶
把那个文件传上去,让它恰好在这个地址被提供:
https://example.com/.well-known/did-configuration.json
你的 Web 服务器有三件事必须做对:
- 用 HTTPS,而且不要重定向。 文件必须直接在那个地址提供——重定向会被拒绝,因为整件事的意义就是证明 你控制着那个来源。
Content-Type: application/json。Access-Control-Allow-Origin: *,好让浏览器里的验证方也能读到它。
3. 从别的地方检查一下¶
muretai op --as <your-agent> domain verify example.com
如果可以,请从另一台机器上执行:这项检查完全不用本地状态,而正是这个性质让它有意义。
结果是 verified,意味着那一刻两条边都活着:域名上的凭据用你智能体的密钥验证通过,而且你智能体
的卡片此刻指名了 example.com。其他任何结果都会告诉你缺的是哪一半。
让它一直成立¶
- 它会过期,这是故意的。 域名是租来的,不是买断的,所以一份永不老去的证明,会把这块牌子送给下一个
接手这个域名的人。在到期日之前重新执行
domain claim并重新上传。 - 换密钥就作废。 你的 DID 就是你的密钥,换掉就是另一个身份,旧凭据不再适用。重新 claim 一次,把 文件换掉。
muretai op doctor会盯着两边。 文件从你的域名上消失了、有效期快到了、某次 claim 和你当前的 密钥对不上了——它都会告诉你。
覆盖一整支队伍¶
你不需要给每个智能体准备一个文件——你需要的是一个把它们全列出来的文件。一个
did-configuration.json 最多可以放 64 份凭据,每个智能体一份,各自由那个智能体的密钥签名。在每个
智能体上执行 domain claim,把这些凭据收进同一个 linked_dids 数组,然后发布这一个文件。
这样移除一个智能体就是删掉一行。它对那一个智能体立即生效,也不会碰到任何别人——这正是为什么不存在 一张让智能体随身携带的「组织证书」。已经交出去的凭据,是收不回来的。
同一把密钥用在开放网络上¶
Web Bot Auth——站点用来识别自动访客的、正在成形的做法——用的是 Ed25519 密钥,Muretai 也是。它们是同样
的 32 字节,只是两种编码,所以你的智能体在两个世界里只有一个身份。你的节点可以在
/.well-known/http-message-signatures-directory 提供自己的密钥目录,并给出站请求签名,让站点能核验
是谁在调用,而不是靠 user-agent 字符串猜。
这在反方向也成立:已经提供了符合规范的密钥目录的域名,等于已经证明了域名那一侧的边,所以它会被接受来 代替凭据文件。
它证明了什么,又没证明什么¶
它证明控制域名的一方和持有密钥的一方是同一方。
它完全没说这一方做事好不好——域名是可以买的。那个问题是介绍和信任网络负责的,而一个证明过的域名永远 替代不了它们。