github.com/sagernet/sing-box@v1.9.0-rc.20/docs/configuration/shared/tls.zh.md (about) 1 !!! quote "sing-box 1.8.0 中的更改" 2 3 :material-alert-decagram: [utls](#utls) 4 5 ### 入站 6 7 ```json 8 { 9 "enabled": true, 10 "server_name": "", 11 "alpn": [], 12 "min_version": "", 13 "max_version": "", 14 "cipher_suites": [], 15 "certificate": [], 16 "certificate_path": "", 17 "key": [], 18 "key_path": "", 19 "acme": { 20 "domain": [], 21 "data_directory": "", 22 "default_server_name": "", 23 "email": "", 24 "provider": "", 25 "disable_http_challenge": false, 26 "disable_tls_alpn_challenge": false, 27 "alternative_http_port": 0, 28 "alternative_tls_port": 0, 29 "external_account": { 30 "key_id": "", 31 "mac_key": "" 32 }, 33 "dns01_challenge": {} 34 }, 35 "ech": { 36 "enabled": false, 37 "pq_signature_schemes_enabled": false, 38 "dynamic_record_sizing_disabled": false, 39 "key": [], 40 "key_path": "" 41 }, 42 "reality": { 43 "enabled": false, 44 "handshake": { 45 "server": "google.com", 46 "server_port": 443, 47 48 ... // 拨号字段 49 }, 50 "private_key": "UuMBgl7MXTPx9inmQp2UC7Jcnwc6XYbwDNebonM-FCc", 51 "short_id": [ 52 "0123456789abcdef" 53 ], 54 "max_time_difference": "1m" 55 } 56 } 57 ``` 58 59 ### 出站 60 61 ```json 62 { 63 "enabled": true, 64 "disable_sni": false, 65 "server_name": "", 66 "insecure": false, 67 "alpn": [], 68 "min_version": "", 69 "max_version": "", 70 "cipher_suites": [], 71 "certificate": [], 72 "certificate_path": "", 73 "ech": { 74 "enabled": false, 75 "pq_signature_schemes_enabled": false, 76 "dynamic_record_sizing_disabled": false, 77 "config": [], 78 "config_path": "" 79 }, 80 "utls": { 81 "enabled": false, 82 "fingerprint": "" 83 }, 84 "reality": { 85 "enabled": false, 86 "public_key": "jNXHt1yRo0vDuchQlIP6Z0ZvjT3KtzVI-T4E7RoLJS0", 87 "short_id": "0123456789abcdef" 88 } 89 } 90 ``` 91 92 TLS 版本值: 93 94 * `1.0` 95 * `1.1` 96 * `1.2` 97 * `1.3` 98 99 密码套件值: 100 101 * `TLS_RSA_WITH_AES_128_CBC_SHA` 102 * `TLS_RSA_WITH_AES_256_CBC_SHA` 103 * `TLS_RSA_WITH_AES_128_GCM_SHA256` 104 * `TLS_RSA_WITH_AES_256_GCM_SHA384` 105 * `TLS_AES_128_GCM_SHA256` 106 * `TLS_AES_256_GCM_SHA384` 107 * `TLS_CHACHA20_POLY1305_SHA256` 108 * `TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA` 109 * `TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA` 110 * `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA` 111 * `TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA` 112 * `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256` 113 * `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` 114 * `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` 115 * `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` 116 * `TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256` 117 * `TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256` 118 119 !!! note "" 120 121 当内容只有一项时,可以忽略 JSON 数组 [] 标签 122 123 ### 字段 124 125 #### enabled 126 127 启用 TLS 128 129 #### disable_sni 130 131 ==仅客户端== 132 133 不要在 ClientHello 中发送服务器名称. 134 135 #### server_name 136 137 用于验证返回证书上的主机名,除非设置不安全。 138 139 它还包含在 ClientHello 中以支持虚拟主机,除非它是 IP 地址。 140 141 #### insecure 142 143 ==仅客户端== 144 145 接受任何服务器证书。 146 147 #### alpn 148 149 支持的应用层协议协商列表,按优先顺序排列。 150 151 如果两个对等点都支持 ALPN,则选择的协议将是此列表中的一个,如果没有相互支持的协议则连接将失败。 152 153 参阅 [Application-Layer Protocol Negotiation](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation)。 154 155 #### min_version 156 157 可接受的最低 TLS 版本。 158 159 默认情况下,当前使用 TLS 1.2 作为客户端的最低要求。作为服务器时使用 TLS 1.0。 160 161 #### max_version 162 163 可接受的最大 TLS 版本。 164 165 默认情况下,当前最高版本为 TLS 1.3。 166 167 #### cipher_suites 168 169 启用的 TLS 1.0-1.2密码套件的列表。列表的顺序被忽略。请注意,TLS 1.3 的密码套件是不可配置的。 170 171 如果为空,则使用安全的默认列表。默认密码套件可能会随着时间的推移而改变。 172 173 #### certificate 174 175 服务器 PEM 证书行数组。 176 177 #### certificate_path 178 179 服务器 PEM 证书路径。 180 181 #### key 182 183 ==仅服务器== 184 185 服务器 PEM 私钥行数组。 186 187 #### key_path 188 189 ==仅服务器== 190 191 服务器 PEM 私钥路径。 192 193 #### utls 194 195 ==仅客户端== 196 197 !!! note "" 198 199 uTLS 维护不善且其效果可能未经证实,使用风险自负。 200 201 uTLS 是 "crypto/tls" 的一个分支,它提供了 ClientHello 指纹识别阻力。 202 203 可用的指纹值: 204 205 !!! question "自 sing-box 1.8.0 起" 206 207 :material-plus: chrome_psk 208 :material-plus: chrome_psk_shuffle 209 :material-plus: chrome_padding_psk_shuffle 210 :material-plus: chrome_pq 211 :material-plus: chrome_pq_psk 212 213 * chrome 214 * chrome_psk 215 * chrome_psk_shuffle 216 * chrome_padding_psk_shuffle 217 * chrome_pq 218 * chrome_pq_psk 219 * firefox 220 * edge 221 * safari 222 * 360 223 * qq 224 * ios 225 * android 226 * random 227 * randomized 228 229 默认使用 chrome 指纹。 230 231 ## ECH 字段 232 233 ECH (Encrypted Client Hello) 是一个 TLS 扩展,它允许客户端加密其 ClientHello 的第一部分 234 信息。 235 236 ECH 配置和密钥可以通过 `sing-box generate ech-keypair [--pq-signature-schemes-enabled]` 生成。 237 238 #### pq_signature_schemes_enabled 239 240 启用对后量子对等证书签名方案的支持。 241 242 建议匹配 `sing-box generate ech-keypair` 的参数。 243 244 #### dynamic_record_sizing_disabled 245 246 禁用 TLS 记录的自适应大小调整。 247 248 如果为 true,则始终使用最大可能的 TLS 记录大小。 249 如果为 false,则可能会调整 TLS 记录的大小以尝试改善延迟。 250 251 #### key 252 253 ==仅服务器== 254 255 ECH PEM 密钥行数组 256 257 #### key_path 258 259 ==仅服务器== 260 261 ECH PEM 密钥路径 262 263 #### config 264 265 ==仅客户端== 266 267 ECH PEM 配置行数组 268 269 如果为空,将尝试从 DNS 加载。 270 271 #### config_path 272 273 ==仅客户端== 274 275 ECH PEM 配置路径 276 277 如果为空,将尝试从 DNS 加载。 278 279 ### ACME 字段 280 281 #### domain 282 283 一组域名。 284 285 默认禁用 ACME。 286 287 #### data_directory 288 289 ACME 数据目录。 290 291 默认使用 `$XDG_DATA_HOME/certmagic|$HOME/.local/share/certmagic`。 292 293 #### default_server_name 294 295 如果 ClientHello 的 ServerName 字段为空,则选择证书时要使用的服务器名称。 296 297 #### email 298 299 创建或选择现有 ACME 服务器帐户时使用的电子邮件地址。 300 301 #### provider 302 303 要使用的 ACME CA 供应商。 304 305 | 值 | 供应商 | 306 |--------------------|---------------| 307 | `letsencrypt (默认)` | Let's Encrypt | 308 | `zerossl` | ZeroSSL | 309 | `https://...` | 自定义 | 310 311 #### disable_http_challenge 312 313 禁用所有 HTTP 质询。 314 315 #### disable_tls_alpn_challenge 316 317 禁用所有 TLS-ALPN 质询。 318 319 #### alternative_http_port 320 321 用于 ACME HTTP 质询的备用端口;如果非空,将使用此端口而不是 80 来启动 HTTP 质询的侦听器。 322 323 #### alternative_tls_port 324 325 用于 ACME TLS-ALPN 质询的备用端口; 系统必须将 443 转发到此端口以使质询成功。 326 327 #### external_account 328 329 EAB(外部帐户绑定)包含将 ACME 帐户绑定或映射到其他已知帐户所需的信息由 CA。 330 331 外部帐户绑定“用于将 ACME 帐户与非 ACME 系统中的现有帐户相关联,例如 CA 客户数据库。 332 333 为了启用 ACME 帐户绑定,运行 ACME 服务器的 CA 需要向 ACME 客户端提供 MAC 密钥和密钥标识符,使用 ACME 之外的一些机制。 334 §7.3.4 335 336 #### external_account.key_id 337 338 密钥标识符。 339 340 #### external_account.mac_key 341 342 MAC 密钥。 343 344 #### dns01_challenge 345 346 ACME DNS01 验证字段。如果配置,将禁用其他验证方法。 347 348 参阅 [DNS01 验证字段](/configuration/shared/dns01_challenge/)。 349 350 ### Reality 字段 351 352 #### handshake 353 354 ==仅服务器== 355 356 ==必填== 357 358 握手服务器地址和 [拨号参数](/zh/configuration/shared/dial/)。 359 360 #### private_key 361 362 ==仅服务器== 363 364 ==必填== 365 366 私钥,由 `sing-box generate reality-keypair` 生成。 367 368 #### public_key 369 370 ==仅客户端== 371 372 ==必填== 373 374 公钥,由 `sing-box generate reality-keypair` 生成。 375 376 #### short_id 377 378 ==必填== 379 380 一个零到八位的十六进制字符串。 381 382 #### max_time_difference 383 384 服务器与和客户端之间允许的最大时间差。 385 386 默认禁用检查。 387 388 ### 重载 389 390 对于服务器配置,如果修改,证书和密钥将自动重新加载。