8.7. 启用客户端证书查找


当代理配置为 TLS 终止代理时,客户端证书信息可以通过特定的 HTTP 请求标头转发到服务器,然后用来验证客户端。您可以配置服务器如何检索客户端证书信息,具体取决于您使用的代理。

警告

通过 X.509 身份验证的代理标头进行客户端证书查找被视为安全敏感。如果配置错误,则使用伪客户端证书标头进行身份验证。需要采取额外的预防措施,以确保在通过代理标头传递时可以信任客户端证书信息。

  • 仔细检查您的用例需要重新加密或边缘 TLS 终止,这意味着使用代理标头进行客户端证书查找。当需要 X.509 身份验证时,建议使用 TLS passthrough 作为更安全的选项,因为它不需要通过代理标头传递证书。代理标头中的客户端证书查找仅适用于重新加密和边缘 TLS 终止。
  • 如果 passthrough 不是一个选项,请实现以下安全措施:

    • 配置网络,以便红帽构建的 Keycloak 被隔离,只能接受来自代理的连接。
    • 确保代理覆盖 spi-x509cert-lookup-<provider>-ssl-client-cert 选项中配置的标头。
    • 请记住,任何 spi-x509cert Case 选项都没有反映 proxy-trusted-addresses 选项。
    • 额外注意 spi-x509cert-lookup-<provider>-trust-proxy-verification 设置。请确保仅在信任代理以验证客户端证书时启用它。在没有 代理验证客户端证书链的情况下,设置 spi-x509cert-lookup-<provider>-trust-proxy-verification=true 将红帽构建的 Keycloak 公开给安全漏洞。

服务器支持一些最常见的 TLS 终止代理,例如:

Proxy供应商

Apache HTTP 服务器

Apache

HAProxy

hapoxy

NGINX

nginx

要配置如何从您需要的请求检索客户端证书:

启用对应的代理供应商

bin/kc.[sh|bat] build --spi-x509cert-lookup-provider=<provider>

配置 HTTP 标头

bin/kc.[sh|bat] start --spi-x509cert-lookup-<provider>-ssl-client-cert=SSL_CLIENT_CERT --spi-x509cert-lookup-<provider>-ssl-cert-chain-prefix=CERT_CHAIN --spi-x509cert-lookup-<provider>-certificate-chain-length=10

在配置 HTTP 标头时,您需要确保使用的值与代理转发的标头名称对应。

配置供应商的可用选项包括:

选项描述

ssl-client-cert

保存客户端证书的标头名称

ssl-cert-chain-prefix

标头包含链中额外证书的前缀,并用于在链的长度中相应地检索单个证书。例如,值 CERT_CHAIN 将告知服务器将标头 CERT_CHAIN_0CERT_CHAIN_9 (如果 certificate-chain-length 设为 10 )加载额外的证书。

certificate-chain-length

证书链的最大长度。

trust-proxy-verification

启用信任 NGINX 代理证书验证,而不是将证书转发到红帽构建的 Keycloak,并在红帽构建的 Keycloak 中进行验证。

8.7.1. 配置 NGINX 供应商

NGINX SSL/TLS 模块不会公开客户端证书链。红帽构建的 Keycloak 的 NGINX 证书查找供应商使用红帽构建的 Keycloak 信任存储重建它。

如果您使用这个供应商,请参阅 配置可信证书 以了解如何配置红帽构建的 Keycloak Truststore。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.