github.com/inazumav/sing-box@v0.0.0-20230926072359-ab51429a14f1/docs/configuration/shared/tls.zh.md (about)

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