http 块
http 是一个可选的配置块,用于自定义 Alloy HTTP 服务器的功能。http 没有标签,每个配置文件只能提供一次。
示例
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 设置。
警告
如果您添加
tls块并在 Alloy 运行时重新加载配置,现有连接将继续使用明文通信。同样,如果您删除tls块并在 Alloy 运行时重新加载配置,现有连接将继续使用 TLS 通信。为确保所有连接都使用 TLS,请在启动 Alloy 之前配置
tls块。
| 名称 | 类型 | 描述 | 默认值 | 必需 |
|---|---|---|---|---|
cert_pem | string | 服务器 TLS 证书的 PEM 数据。 | "" | 有条件的 |
cert_file | string | 磁盘上服务器 TLS 证书的路径。 | "" | 有条件的 |
key_pem | string | 服务器 TLS 密钥的 PEM 数据。 | "" | 有条件的 |
key_file | string | 磁盘上服务器 TLS 密钥的路径。 | "" | 有条件的 |
client_ca_pem | string | 用于验证请求的客户端 CA 的 PEM 数据。 | "" | 否 |
client_ca_file | string | 磁盘上用于验证请求的客户端 CA 文件的路径。 | "" | 否 |
client_auth_type | string | 使用的客户端认证类型。 | "NoClientCert" | 否 |
cipher_suites | list(string) | 使用的密码套件集合。 | [] | 否 |
curve_preferences | list(string) | 握手中使用的椭圆曲线集合。 | [] | 否 |
min_version | string | 接受客户端连接的最低 TLS 版本。 | "" | 否 |
max_version | string | 接受客户端连接的最高 TLS 版本。 | "" | 否 |
指定 tls 块时,需要提供 TLS 证书(使用 cert_pem 或 cert_file)和 TLS 密钥(使用 key_pem 或 key_file)的参数。
以下参数对互斥,一次只能配置其中一个
cert_pem和cert_filekey_pem和key_fileclient_ca_pem和client_ca_file
client_auth_type 参数决定是否验证客户端证书。默认值 NoClientCert 表示不验证客户端证书。client_ca_pem 和 client_ca_file 参数只能在 client_auth_type 不是 NoClientCert 时配置。
client_auth_type 接受以下值
NoClientCert: 既不请求也不验证客户端证书。RequestClientCert: 请求客户端发送可选证书。客户端提供的证书不被验证。RequireAnyClientCert: 要求客户端至少提供一个证书。客户端提供的证书不被验证。VerifyClientCertIfGiven: 请求客户端发送可选证书。如果发送了证书,则必须有效。RequireAndVerifyClientCert: 要求客户端发送有效证书。
可以使用 client_ca_pem 或 client_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_version 和 max_version 参数决定客户端连接可接受的最低和最高 TLS 版本。如果您不提供最低和最高 TLS 版本,将使用默认值。
识别以下版本
TLS13代表 TLS 1.3TLS12代表 TLS 1.2TLS11代表 TLS 1.1TLS10代表 TLS 1.0
windows certificate filter 块
windows_certificate_filter 块用于配置从内置 Windows 证书存储中检索证书。当使用 windows_certificate_filter 块时,以下 TLS 设置将被覆盖,如果定义了它们将导致错误。
cert_pemcert_filekey_pemkey_fileclient_caclient_ca_file
警告
此功能仅在 Windows 上可用。
TLS 最低和最高版本可能与存储在 Windows 证书存储中的证书不兼容。即使证书与指定的 TLS 版本不兼容,
windows_certificate_filter也会提供证书。
server 块
server 块用于查找要检查签名者的证书。如果找到多个证书,windows_certificate_filter 将选择到期日期最远的证书。
| 名称 | 类型 | 描述 | 默认值 | 必需 |
|---|---|---|---|---|
store | string | 查找服务器证书的存储名称。例如,MY 或 CA。 | "" | 是 |
system_store | string | 查找服务器证书的系统存储名称。例如,LocalMachine 或 CurrentUser。 | "" | 是 |
issuer_common_names | list(string) | 要对照检查的颁发者通用名。 | 否 | |
refresh_interval | string | 检查新服务器证书的频率。 | "5m" | 否 |
template_id | string | 要匹配的服务器模板 ID,ASN1 格式,例如 “1.2.3”。 | "" | 否 |
client 块
client 块用于检查提供给服务器的证书。
| 名称 | 类型 | 描述 | 默认值 | 必需 |
|---|---|---|---|---|
issuer_common_names | list(string) | 要对照检查的颁发者通用名。 | 否 | |
subject_regex | string | 用于匹配 Subject 名称的正则表达式。 | "" | 否 |
template_id | string | 要匹配的客户端模板 ID,ASN1 格式,例如 “1.2.3”。 | "" | 否 |



