@dnsid-ai/运输
节点.js 为DNSid TypeScript包所执行的运输.
需要默认节点 DNS 和 HTTPS/TLS 管道时使用此软件包 @dnsid-ai/protocol 或者说 @dnsid-ai/sdk/node。 。 。 .
责任
- 通过系统 DNS 或配置的 DNS 服务器解析 DNS TXT
- DNS 服务器解析和查找助手
- HTTPS JSON 获取
- 安全安保部队
fetch用于需要连接时间 DNS 检查的配置文件包 - TLS 证书抓取
- 自定义 CA 捆绑支持
- 自定义 DNS 服务器支持
此软件包是节点专用的,并有意从 @dnsid-ai/protocol。 。 。 .
安装
npm install @dnsid-ai/transport
示例
import { createDefaultDnsResolver, createSsrfSafeFetch, fetchJson } from '@dnsid-ai/transport';
const dnsResolver = createDefaultDnsResolver({ dnsServer: process.env.DNSID_DNS_SERVER });
const result = await fetchJson('https://agent.example/.well-known/dnsid-status.json', {
allowedHost: 'agent.example',
dnsServer: process.env.DNSID_DNS_SERVER,
caBundlePath: process.env.DNSID_CA_BUNDLE,
});
const safeFetch = createSsrfSafeFetch({ dnsServer: process.env.DNSID_DNS_SERVER });
单端签名反应运输
createResponseSignatureTransport(config?) 返回时 responseTransport
函数 HttpSignaturesProfile.createSignedFetch 何时
signing.responseSignature 已存在。 它接受准备的 Request 返回时
{ response, peerCert }。它每个呼叫、再利用、保持状态都执行一个HTTPS请求
互通电话,从不跟踪重定向或重复,从不缓存
保存编码内容字节,而不透明解压。 请求机构
随同发送 Content-Length。证书来自连接:
带回了反应,所以可以满足
fl=mtls; 剖面图仍然可以验证其SAN相对于预期的 DNSid 代理.
运输尊重请求中止信号,并有30秒的上限. 签字客户提供共享的有限发送/阅读/核查预算 受限内容为 (8 MiB). 独立的运输消费者也必须受到约束 机构读取,取消拒绝的答复,不披露未经核实的内容. 协议升级和隧道建设被拒绝. HTTP 错误和普通 重定向回复返回到配置文件以进行签名核查.
自定义 DNS 和 CA 设置如下 createDnsidFetch。像这样的功能,这个
传输不过滤私有地址: 呼叫者必须选择可信任的目标
或为运输机注入必要的网络地址政策。 这是独立的
从WBA的SSRF安全发现运输,并不改变这个特征.
大多数节点应用程序应该通过此操作 @dnsid-ai/sdk/node 或配置默认值.
默认解析器查询由节点返回的 DNS 服务器 dns.getServers() 以顺序,使用带有TCP回落的UDP来捕捉递归服务器所剩的TXT TTL(封顶一天). dnsServer 能够覆盖此列表。 在失败或空答时, 它会回到节点的本地 TXT 和 TTL 检索 0失去能力的身份 缓冲这个结果。 节点的服务器列表可能会省略macOS scoped/split-DNS路由,因此连正线解答也无法保证在这些设置中与平台解析器相匹配. 两个路径都不能验证 DNSSEC (UNKNOWN; SERVFAIL 是一个解析错误. validated编号 :required DNSSEC 模式仍需要注入验证解析器. 缓存的校验仍然处于重排状态,除非 verification.statusCheckInterval 已经设定.
createSsrfSafeFetch() 在向外套接字使用的搜索中执行不安全地址拒绝, 返回方向方向不自动跟踪 。 信任的测试/私人部署可能通过 privateAddressHosts: 确切的主机名或前缀后缀, 如 .test (label-boarded, case-insential);然后只有RFC 1918/ULA 私有和回回结果被接受用于匹配主机,而链接-local,混合公/私,IP-literal URL仍然被屏蔽. 默认情况下不允许任何东西,甚至 .test; 当地 dnsid 堆栈需要 privateAddressHosts: ['.test'] (或 DNSID_PRIVATE_HOSTS=.test 结束 loadEnvironment) (中文(简体) ). 接受自定义的配置软件包 fetch 无法强制对任意执行进行等同的行为, 因此自定义获取注入仍然可以信任的基础设施 .