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_file
key_pem
和key_file
client_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_pem
cert_file
key_pem
key_file
client_ca
client_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”。 | "" | 否 |