用途:IC canister 默认通过 <canister-id>.icp.net 访问;本服务让你用自有域名(如 yourdomain.com)对外提供 canister 内容。自定义域名工作在边界节点层,通过 DNS 将域名映射到任意 canister ID,适用于任何能通过 HTTP 提供 /.well-known/ic-domains 的 canister,包括 asset canister、Juno satellite 及实现 http_request 的自定义 canister。
主要能力:配置 DNS(CNAME、TXT、ACME challenge)、部署域名所有权文件、通过 REST API 注册、由 HTTP 网关自动完成 TLS 证书签发与续期及路由;支持更新指向的 canister 与删除域名。
使用方式:需自有域名及 DNS 编辑权限、已部署且能提供 /.well-known/ic-domains 的 canister、curl(jq 可选)。步骤:一、添加三条 DNS 记录(CNAME 指向 CUSTOM_DOMAIN.icp1.io、TXT 记录 _canister-id 填 canister ID、CNAME _acme-challenge 指向 _acme-challenge.CUSTOM_DOMAIN.icp2.io)。二、创建 ic-domains 文件列出各域名。三、部署 canister。四、校验:curl -sL -X GET "https://icp.net/custom-domains/v1/CUSTOM_DOMAIN/validate" | jq。五、注册:curl -sL -X POST "https://icp.net/custom-domains/v1/CUSTOM_DOMAIN" | jq。六、轮询至 registered。更新用 PATCH,删除用 DELETE。HttpAgent 的 host 应留空或显式设为 https://icp-api.io,不可指向自定义域名。
限制与注意事项:需禁用 DNS 提供商的 SSL/TLS(否则干扰 ACME);顶级域名不支持 CNAME 时用 ANAME/ALIAS 或改用子域名;_acme-challenge CNAME 与 _canister-id TXT 不可缺失或重复;必须显式调用 API 注册,DNS 配置本身不够;已上线且已有用户的域名迁移会因 II 按 origin 隔离而授予全新账户,需先固定 derivation origin 并配置 .well-known/ii-alternative-origins。具体收费、价格等资料暂未提供。