第 5 章 加密数据网格服务器连接

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

5.1. 配置 Data Grid Server Keystores

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

前提条件

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

数据网格服务器支持以下密钥存储格式:JKS、JCEKS、PKCS12、BKS、BCFKS 和 UBER。

重要

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

流程

  1. 将包含 Data Grid 服务器的 SSL/TLS 身份的密钥存储添加到 $RHDG_HOME/server/conf 目录。
  2. 向 Data Grid Server 安全域添加 服务器身份 定义。
  3. 使用 path 属性指定密钥存储文件名。
  4. 为密钥存储密码和证书别名提供 keystore-passwordalias 属性。

Data Grid Server keystore 配置

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:12.1 https://infinispan.org/schemas/infinispan-server-12.1.xsd"
          xmlns="urn:infinispan:server:12.1">
   <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.pfx"
                         relative-to="infinispan.server.config.path"
                         keystore-password="secret"
                         alias="rhdg-server"/>
            </ssl>
         </server-identities>
      </security-realm>
   </security-realms>
</security>

后续步骤

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

5.1.1. 自动生成密钥存储

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

重要

自动生成的密钥存储:

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

流程

  1. 在服务器配置中包含 keystore 元素的 generate-self-signed-certificate-host 属性。
  2. 为服务器证书指定主机名作为值。

带有生成的密钥存储的 SSL 服务器身份

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:12.1 https://infinispan.org/schemas/infinispan-server-12.1.xsd"
          xmlns="urn:infinispan:server:12.1">
   <security-realms>
      <security-realm name="default">
         <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"
                         keystore-password="secret"
                         alias="server"
                         generate-self-signed-certificate-host="localhost"/>
            </ssl>
         </server-identities>
      </security-realm>
   </security-realms>
</security>

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

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

流程

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

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

    警告

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

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

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

SSL 引擎配置

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:12.1
          https://infinispan.org/schemas/infinispan-server-12.1.xsd"
          xmlns="urn:infinispan:server:12.1">
   <security-realms>
      <security-realm name="default">
         <server-identities>
            <ssl>
               <keystore path="server.p12"
                         relative-to="infinispan.server.config.path"
                         keystore-password="secret" alias="server"/>
               <!-- Configures Data Grid Server to use specific TLS versions and cipher suites. -->
               <engine enabled-protocols="TLSv1.3"
                       enabled-ciphersuites="TLS_AES_256_GCM_SHA384 TLS_AES_128_GCM_SHA256 TLS_AES_128_CCM_8_SHA256"/>
            </ssl>
         </server-identities>
      </security-realm>
   </security-realms>
</security>