第 6 章 配置 TLS/SSL 加密


您可以通过配置包含 Data Grid 的公钥和私钥的密钥存储来保护数据网格服务器连接的安全性。如果需要 mutual TLS,您还可以配置客户端证书身份验证。

6.1. 配置 Data Grid Server 密钥存储

将密钥存储添加到 Data Grid Server,并将它配置为提供 SSL/TLS 证书,以将其身份验证给客户端。如果安全域包含 TLS/SSL 身份,它将加密所有使用该安全域的 Data Grid Server 端点的连接。

先决条件

  • 创建含有 Data Grid Server 证书或证书链的密钥存储。

数据网格服务器支持以下密钥存储格式:JKS、JCEKS、PKCS12/PFX 和 PEM。如果存在 Bouncy Castle 库,还支持 BKS、BCFKS 和 UBER。

重要

在生产环境中,服务器证书应该由可信证书颁发机构(根)或 Intermediate CA 签名。

提示

如果它们同时包含以下内容,您可以使用 PEM 文件作为密钥存储:

  • PKCS#1 或 PKCS#8 格式的私钥。
  • 个或多个证书。

您还应该使用空密码(密码="")配置 PEM 文件密钥存储。

流程

  1. 打开 Data Grid Server 配置进行编辑。
  2. 将含有 Data Grid Server 的 SSL/TLS 身份的密钥存储添加到 $RHDG_HOME/server/conf 目录中。
  3. 在 Data Grid 服务器 安全域中添加服务器事件定义。
  4. 使用 path 属性指定密钥存储文件名。
  5. 为密钥存储密码和证书别名 提供密钥存储密码别名 属性。
  6. 保存对您的配置的更改。

后续步骤

使用信任存储配置客户端,以便他们可以验证用于 Data Grid 服务器的 SSL/TLS 身份。

密钥存储配置

XML

<server xmlns="urn:infinispan:server:13.0">
  <security>
    <security-realms>
      <security-realm name="default">
        <server-identities>
          <ssl>
            <!-- Adds a keystore that contains server certificates that provide SSL/TLS identities to clients. -->
            <keystore path="server.p12"
                      relative-to="infinispan.server.config.path"
                      password="secret"
                      alias="my-server"/>
          </ssl>
        </server-identities>
      </security-realm>
    </security-realms>
  </security>
</server>

JSON

{
  "server": {
    "security": {
      "security-realms": [{
        "name": "default",
        "server-identities": {
          "ssl": {
            "keystore": {
              "alias": "my-server",
              "path": "server.p12",
              "password": "secret"
            }
          }
        }
      }]
    }
  }
}

YAML

server:
  security:
    securityRealms:
      - name: "default"
        serverIdentities:
          ssl:
            keystore:
              alias: "my-server"
              path: "server.p12"
              password: "secret"

6.1.1. 生成 Data Grid Server 密钥存储

配置 Data Grid Server,使其在启动时自动生成密钥存储。

重要

自动生成的密钥存储:

  • 不应在生产环境中使用。
  • 在需要时生成;例如,从客户端获取第一个连接。
  • 包含您可以在 Hot Rod 客户端中使用的证书。

流程

  1. 打开 Data Grid Server 配置进行编辑。
  2. 在服务器配置中,包含 keystore 元素的 generate-self-signed-certificate-host 属性。
  3. 将服务器证书的主机名指定为值。
  4. 保存对您的配置的更改。
生成的密钥存储配置

XML

<server xmlns="urn:infinispan:server:13.0">
  <security>
    <security-realms>
      <security-realm name="GeneratedKeystore">
        <server-identities>
          <ssl>
            <!-- Generates a keystore that includes a self-signed certificate with the specified hostname. -->
            <keystore path="server.p12"
                      relative-to="infinispan.server.config.path"
                      password="secret"
                      alias="server"
                      generate-self-signed-certificate-host="localhost"/>
          </ssl>
        </server-identities>
      </security-realm>
    </security-realms>
  </security>
</server>

JSON

{
  "server": {
    "security": {
      "security-realms": [{
        "name": "GeneratedKeystore",
        "server-identities": {
          "ssl": {
            "keystore": {
              "alias": "server",
              "generate-self-signed-certificate-host": "localhost",
              "path": "server.p12",
              "password": "secret"
            }
          }
        }
      }]
    }
  }
}

YAML

server:
  security:
    securityRealms:
      - name: "GeneratedKeystore"
        serverIdentities:
          ssl:
            keystore:
              alias: "server"
              generateSelfSignedCertificateHost: "localhost"
              path: "server.p12"
              password: "secret"

6.1.2. 配置 TLS 版本和密码套件

当使用 SSL/TLS 加密来保护部署时,您可以将 Data Grid 服务器配置为使用特定的 TLS 协议版本以及协议中的特定密码套件。

流程

  1. 打开 Data Grid Server 配置进行编辑。
  2. engine 元素添加到 Data Grid Server 的 SSL 配置中。
  3. 将 Data Grid 配置为使用具有 enabled-protocols 属性的一个或多个 TLS 版本。

    Data Grid Server 默认支持 TLS 版本 1.2 和 1.3。如果正确设置了 TLSv1.3,则只为了限制客户端连接的安全协议。数据网格不建议启用 TLSv1.1, 因为它是支持有限的旧协议,并提供弱的安全性。您应该不会启用任何比 1.1 旧的 TLS 版本。

    警告

    如果您修改 Data Grid Server 的 SSL 引擎 配置,则必须使用 enabled-protocols 属性显式配置 TLS 版本。省略 enabled-protocols 属性允许任何 TLS 版本。

    <engine enabled-protocols="TLSv1.3 TLSv1.2" />
  4. 将 Data Grid 配置为使用 enabled-ciphersuites 属性(用于 TLSv1.2 及以下)以及 enabled-ciphersuites-tls13 属性(用于 TLSv1.3)的一个或多个加密套件。

    您必须确保设置支持计划使用的任何协议功能的密码套件,例如 HTTP/2 ALPN

  5. 保存对您的配置的更改。
SSL 引擎配置

XML

<server xmlns="urn:infinispan:server:13.0">
  <security>
    <security-realms>
      <security-realm name="default">
        <server-identities>
          <ssl>
            <keystore path="server.p12"
                      relative-to="infinispan.server.config.path"
                      password="secret"
                      alias="server"/>
            <!-- Configures Data Grid Server to use specific TLS versions and cipher suites. -->
            <engine enabled-protocols="TLSv1.3 TLSv1.2"
                    enabled-ciphersuites="TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
                    enabled-ciphersuites-tls13="TLS_AES_256_GCM_SHA384"/>
          </ssl>
        </server-identities>
      </security-realm>
    </security-realms>
  </security>
</server>

JSON

{
  "server": {
    "security": {
      "security-realms": [{
        "name": "default",
        "server-identities": {
          "ssl": {
            "keystore": {
              "alias": "server",
              "path": "server.p12",
              "password": "secret"
            },
            "engine": {
              "enabled-protocols": ["TLSv1.3"],
              "enabled-ciphersuites": "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256",
              "enabled-ciphersuites-tls13": "TLS_AES_256_GCM_SHA384"
            }
          }
        }
      }]
    }
  }
}

YAML

server:
  security:
    securityRealms:
      - name: "default"
        serverIdentities:
          ssl:
            keystore:
              alias: "server"
              path: "server.p12"
              password: "secret"
            engine:
              enabledProtocols:
                - "TLSv1.3"
              enabledCiphersuites: "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
              enabledCiphersuitesTls13: "TLS_AES_256_GCM_SHA384"

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.