10.4. 保护传输堆栈


默认情况下,使用基于 TCP 的传输堆栈启用使用 TLS 的加密,只要您使用基于 TCP 的传输堆栈,就不需要默认配置不需要对缓存 XML 的修改。

注意

如果您使用基于 UDPTCP_NIO2 的传输堆栈,请按如下所示配置传输堆栈的加密:

  1. 将选项 cache-embedded-mtls-enabled 设置为 false
  2. 按照 JGroups 加密文档中的文档和 加密集群传输

启用 TLS 后,红帽构建的 Keycloak 会自动生成自签名 RSA 2048 位证书来保护连接,并使用 TLS 1.3 来保护通信。密钥和证书存储在数据库中,以便它们可供所有节点使用。默认情况下,证书在 60 天内有效,并在运行时每 30 天进行轮转。使用选项 cache-embedded-mtls-rotation-interval-days 来更改它。

10.4.1. 在服务网格内运行

当使用类似 Istio 的服务网格时,您可能需要允许红帽构建的 Keycloak Pod 之间的直接 mTLS 通信,以允许 mutual 身份验证正常工作。否则,您可能会看到 JGRP000006: failed accept connection from peer SSLSocket (表示显示错误的证书),集群将无法正确表单。

然后,您可以选择允许红帽构建的 Keycloak Pod 之间的 mTLS 通信,或者依赖服务网格传输安全性来加密通信并验证对等点。

在使用 Istio 时,为红帽构建的 Keycloak 允许直接 mTLS 通信:

  • 应用以下配置以允许直接连接。

    apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:
      name: infinispan-allow-nomtls
    spec:
      selector:
        matchLabels:
          app: keycloak 
    1
    
      portLevelMtls:
        "7800": 
    2
    
          mode: PERMISSIVE
    Copy to Clipboard
    1
    更新标签以匹配红帽构建的 Keycloak 部署。
    2
    端口 7800 是默认值。如果您更改了数据传输端口,请调整它。

另外,要禁用 mTLS 通信,并依赖服务网格来加密流量:

  • 将选项 cache-embedded-mtls-enabled 设置为 false
  • 将您的服务网格配置为仅授权来自其他红帽构建的 Keycloak Pod 的流量进行数据传输端口(默认为 7800)。

10.4.2. 提供自己的密钥和证书

虽然不建议标准设置,但在特定设置中至关重要,您可以使用传输堆栈的证书手动配置密钥存储。cache-embedded-mtls-key-store-file 设置密钥存储的路径,而 cache-embedded-mtls-key-store-password 会设置密码来解密它。truststore 包含用来接受连接的有效证书,它可以使用 cache-embedded-mtls-trust-store-file (信任存储的路径)和 cache-embedded-mtls-trust-store-password (解密它的密码)。要限制未授权的访问,请始终为每个红帽构建的 Keycloak 部署使用自签名证书。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat