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  对于服务器配置,如果修改,证书和密钥将自动重新加载。