菜单

开源

http 块

http 是一个可选的配置块,用于自定义 Alloy HTTP 服务器的功能。http 在没有标签的情况下指定,并且每个配置文件只能提供一次。

示例

alloy

http {
  tls {
    cert_file = sys.env("TLS_CERT_FILE_PATH")
    key_file  = sys.env("TLS_KEY_FILE_PATH")
  }
}

参数

http 块不支持任何参数,完全通过内部块进行配置。

http 的定义内部支持以下块

层级结构

描述

必需

tls

tls

定义 HTTP 服务器的 TLS 设置。

tls > windows_certificate_filter

windows_certificate_filter

为所有证书配置 Windows 证书存储。

tls > windows_certificate_filter > client

client

为 Windows 证书过滤器配置客户端证书。

tls > windows_certificate_filter > server

server

为 Windows 证书过滤器配置服务器证书。

tls 块

tls 块配置 HTTP 服务器的 TLS 设置。

警告

如果在 Alloy 运行时添加 tls 块并重新加载配置,则现有连接将继续通过明文通信。 同样,如果在 Alloy 运行时删除 tls 块并重新加载配置,则现有连接将继续通过 TLS 通信。

为确保所有连接都使用 TLS,请在启动 Alloy 之前配置 tls 块。

名称

类型

描述

默认值

必需

cert_pem

字符串

服务器 TLS 证书的 PEM 数据。

""

有条件地

cert_file

字符串

磁盘上服务器 TLS 证书的路径。

""

有条件地

key_pem

字符串

服务器 TLS 密钥的 PEM 数据。

""

有条件地

key_file

字符串

磁盘上服务器 TLS 密钥的路径。

""

有条件地

client_ca_pem

字符串

客户端 CA 的 PEM 数据,用于验证请求。

""

client_ca_file

字符串

磁盘上客户端 CA 文件的路径,用于验证请求。

""

client_auth_type

字符串

要使用的客户端身份验证。

"NoClientCert"

cipher_suites

list(string)

要使用的密码套件集。

[]

curve_preferences

list(string)

要在握手中使用的椭圆曲线集。

[]

min_version

字符串

要从客户端接受的最旧 TLS 版本。

""

max_version

字符串

要从客户端接受的最新 TLS 版本。

""

当指定 tls 块时,需要 TLS 证书的参数(使用 cert_pemcert_file)和 TLS 密钥的参数(使用 key_pemkey_file)。

以下参数对是互斥的,一次只能配置一个

  • cert_pemcert_file

  • key_pemkey_file

  • client_ca_pemclient_ca_file

client_auth_type 参数确定是否验证客户端证书。 默认值 NoClientCert 表示不验证客户端证书。 只有当 client_auth_type 不是 NoClientCert 时,才可以配置 client_ca_pemclient_ca_file 参数。

client_auth_type 接受以下值

  • NoClientCert:既不请求也不验证客户端证书。

  • RequestClientCert:请求客户端发送可选证书。 不验证客户端提供的证书。

  • RequireAnyClientCert:要求客户端至少提供一个证书。 不验证客户端提供的证书。

  • VerifyClientCertIfGiven:请求客户端发送可选证书。 如果发送了证书,则必须有效。

  • RequireAndVerifyClientCert:要求客户端发送有效证书。

client_ca_pemclient_ca_file 参数可用于执行客户端证书验证。 只有当 client_auth_type 未设置为 NoClientCert 时,才可以提供这些参数。

cipher_suites 参数确定要使用的密码套件。 如果您不提供密码套件,则使用默认列表。 指定的密码套件集可以来自以下内容

密码

BoringCrypto 构建中允许

TLS_RSA_WITH_AES_128_CBC_SHA

TLS_RSA_WITH_AES_256_CBC_SHA

TLS_RSA_WITH_AES_128_GCM_SHA256

TLS_RSA_WITH_AES_256_GCM_SHA384

TLS_AES_128_GCM_SHA256

TLS_AES_256_GCM_SHA384

TLS_CHACHA20_POLY1305_SHA256

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256

curve_preferences 参数确定在握手期间要优先选择的椭圆曲线集(按优先级顺序)。 如果未提供,则使用默认列表。 指定的椭圆曲线集可以来自以下内容

曲线

BoringCrypto 构建中允许

CurveP256

CurveP384

CurveP521

X25519

min_versionmax_version 参数确定客户端可接受的最旧和最新的 TLS 版本。 如果您不提供最小和最大 TLS 版本,则使用默认值。

以下版本被识别

  • TLS13 代表 TLS 1.3

  • TLS12 代表 TLS 1.2

  • TLS11 代表 TLS 1.1

  • TLS10 代表 TLS 1.0

windows certificate filter 块

windows_certificate_filter 块用于配置从内置 Windows 证书存储检索证书。 当您使用 windows_certificate_filter 块时,以下 TLS 设置将被覆盖,如果定义,则会导致错误。

  • cert_pem

  • cert_file

  • key_pem

  • key_file

  • client_ca

  • client_ca_file

警告

此功能仅在 Windows 上可用。

TLS 最小和最大版本可能与 Windows 证书存储中存储的证书不兼容。 即使 windows_certificate_filter 与指定的 TLS 版本不兼容,它也会提供证书。

server 块

server 块用于查找证书以检查签名者。 如果找到多个证书,windows_certificate_filter 将选择到期时间最远的证书。

名称

类型

描述

默认值

必需

store

字符串

要查找服务器证书的系统存储名称,例如,LocalMachine、CurrentUser。

""

system_store

字符串

要查找服务器证书的存储名称,例如,My、CA。

""

issuer_common_names

list(string)

要检查的颁发者通用名称。

template_id

字符串

要在 ASN1 格式中匹配的服务器模板 ID,例如,“1.2.3”。

""

refresh_interval

字符串

检查新服务器证书的频率。

"5m"

client 块

client 块用于检查呈现给服务器的证书。

名称

类型

描述

默认值

必需

issuer_common_names

list(string)

要检查的颁发者通用名称。

subject_regex

字符串

用于匹配主题名称的正则表达式。

""

template_id

字符串

要在 ASN1 格式中匹配的客户端模板 ID,例如,“1.2.3”。

""