第 4 章 配置 TLS/SSL 加密


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

4.1. 配置 Data Grid 服务器密钥存储

将密钥存储添加到 Data Grid 服务器,并将它配置为提供验证客户端身份的 SSL/TLS 证书。如果安全域包含 TLS/SSL 身份,它会加密到使用该安全域的 Data Grid 服务器端点的任何连接。

先决条件

  • 为 Data Grid 服务器创建一个包含证书或证书链的密钥存储。

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

证书应包含类型为 dNSName 和/或 iPAddresssubjectAltName 扩展,以便客户端可以根据 RFC 2818 规格定义的规则正确执行主机名验证。如果使用不包括此类扩展的证书启动,服务器将发出警告。

重要

在生产环境中,服务器证书应由受信任的证书颁发机构( Root 或 Intermediate CA)签名。

提示

如果以下两者都包含,您可以使用 PEM 文件作为密钥存储:

  • PKCS1/ 或 PKCS""8 格式的私钥。
  • 一个或多个证书。

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

流程

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

后续步骤

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

密钥存储配置

XML

<server xmlns="urn:infinispan:server:15.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"

4.1.1. SSL/TLS 证书轮转

SSL/TLS 证书具有过期日期,之后它们已不再有效。续订证书的过程也称为"轮转"。网格监控密钥存储文件是否有变化,并在不需要服务器或客户端重启的情况下自动重新载入它们。

注意

要在证书轮转过程中确保无缝操作,请使用由证书颁发机构(CA)签名的证书,并使用 CA 证书配置服务器和客户端信任存储。使用自签名证书将导致临时握手失败,直到所有客户端和服务器都已更新。

4.1.2. 生成 Data Grid 服务器密钥存储

配置 Data Grid 服务器,以在启动时自动生成密钥存储。

重要

自动生成的密钥存储:

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

流程

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

XML

<server xmlns="urn:infinispan:server:15.0">
  <security>
    <security-realms>
      <security-realm name="generated-keystore">
        <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": "generated-keystore",
        "server-identities": {
          "ssl": {
            "keystore": {
              "alias": "server",
              "generate-self-signed-certificate-host": "localhost",
              "path": "server.p12",
              "password": "secret"
            }
          }
        }
      }]
    }
  }
}

YAML

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

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

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

流程

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

    默认情况下,Data Grid 服务器支持 TLS 版本 1.2 和 1.3。如果适当,您可以设置 TLSv1.3 仅来限制客户端连接的安全协议。网格不推荐启用 TLSv1.1,因为它是支持有限且提供弱安全性的旧协议。您不应该启用任何早于 1.1 的 TLS 版本。

    警告

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

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

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

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

XML

<server xmlns="urn:infinispan:server:15.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_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"
                    enabled-ciphersuites-tls13="TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"/>
          </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_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256",
              "enabled-ciphersuites-tls13": "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
            }
          }
        }
      }]
    }
  }
}

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.