TLS 服务端
入站、控制 API 等接受 TLS 时共用的终止方式。一个 tls 必须恰好选择一种来源。
yaml
inbounds:
secure:
type: anytls
listen: 127.0.0.1:8443
password: secret
tls:
acme:
domain: proxy.example.com
dns:
servers:
default: {type: udp, address: 127.0.0.1:53}
final: default字段
certificate
- 类型:路径。
- 必填:与
key成对。 - 行为:PEM 证书链,叶证书在前。
key
- 类型:路径。
- 必填:与
certificate成对。 - 行为:对应私钥;文件变化后可重新读取。
acme
- 类型:映射。
- 必填:与静态证书、
reality、kotodama四选一。
reality
- 类型:映射。
- 必填:四选一。
- 行为:用 REALITY 认证客户端并伪装未通过认证的连接。
kotodama
- 类型:映射。
- 必填:四选一。
- 行为:用 Kotodama ECH 标签认证客户端。
acme.domain
- 类型:域名或数组。
- 必填:是。
- 行为:证书要覆盖的名字,只通过 TLS-ALPN-01 验证。
acme.email
- 类型:字符串。
- 必填:可选。
- 行为:CA 账户联系地址。
acme.directory
- 类型:URL。
- 默认:Let's Encrypt 的 ACME directory。
acme.http_client
- 类型:
http_clients名字。 - 默认:
route.default_http_client。
acme.data_directory
- 类型:路径。
- 默认:数据目录下的
acme。 - 行为:只用于导入旧版账户和证书文件。
reality.private_key
- 类型:字符串。
- 必填:是。
- 行为:X25519 私钥的 Base64,解出必须正好 32 字节。
reality.short_ids
- 类型:字符串数组或“用户名到字符串”的映射。
- 默认:空,表示只接受全零 short id。
- 行为:每个用户可被对应 short id 认证。
reality.cover
- 类型:端点字符串。
- 必填:是。
- 行为:未通过 REALITY 的连接交给这个真实站点。
reality.time_diff
- 类型:非负整数,单位秒。
- 默认:
0,不检查时间差。
kotodama.master_password
- 类型:字符串。
- 必填:是。
- 行为:
ktp1.密码或原始文本。
kotodama.outer_sni
- 类型:字符串。
- 必填:是。
- 行为:所有 label 默认使用的外层 SNI。
kotodama.real_upstream
- 类型:端点字符串。
- 默认:外层 SNI 的
443端口。 - 行为:未通过 ECH 的连接交给该站点。
kotodama.path
- 类型:字符串。
- 默认:
/api/v1/sync。 - 行为:Imina POST 的默认路径。
kotodama.inner_sni
- 类型:字符串。
- 必填:可选。
- 行为:ECH 内层名字覆盖。
kotodama.client_labels
- 类型:字符串数组。
- 默认:只接受
default。
kotodama.cover_overrides
- 类型:label 到覆盖映射的表。
- 默认:空。
kotodama.cover_overrides.<label>.outer_sni
- 类型:字符串。
- 必填:可选。
kotodama.cover_overrides.<label>.path
- 类型:字符串。
- 必填:可选。
kotodama.cover_overrides.<label>.real_upstream
- 类型:端点字符串。
- 必填:可选。
说明
仅 Linux
入站 TLS、ACME、REALITY 和 Kotodama 依赖 Linux 的 BoringSSL/内核能力。
证书文件与私钥必须来自同一套身份。ACME 会优先使用缓存中的有效证书,并在到期前续期;没有有效证书时先出示临时自签证书。