2.2. 使用 Asymmetric Encryption 配置集群传输
配置 Data Grid 集群,以生成和分发加密 JGroups 消息的 secret 密钥。
流程
- 使用证书链创建密钥存储,使 Data Grid 能够验证节点身份。
将密钥存储放在集群中每个节点的 classpath 上。
对于 Data Grid Server,您要将密钥存储放在 $RHDG_HOME 目录中。
将
SSL_KEY_EXCHANGE和ASYM_ENCRYPT协议添加到 Data Grid 配置中的 JGroups 堆栈,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建名为"encrypt-tcp"的安全 JGroups 堆栈,用于扩展 Data Grid 的默认 TCP 堆栈。
- 2
- 将节点用来执行证书身份验证的密钥存储命名。
- 3
- 指定密钥存储密码。
- 4
- 使用
stack.combine和stack.position属性在VERIFY_SUSPECT协议后将SSL_KEY_EXCHANGE插入到默认的 TCP 堆栈中。 - 5
- 指定协调器节点生成的 secret 密钥长度。默认值为
2048。 - 6
- 指定 coordinator 节点用来生成 secret 密钥的密码引擎。默认值为
RSA。 - 7
- 配置 Data Grid,以在协调器节点更改时生成并分发新的 secret 密钥。
- 8
- 配置 Data Grid,以在节点离开时生成和分发新的 secret 密钥。
- 9
- 配置 Data Grid 节点,以使用
SSL_KEY_EXCHANGE协议进行证书身份验证。 - 10
- 使用
stack.combine和stack.position属性在SSL_KEY_EXCHANGE协议后将ASYM_ENCRYPT插入默认的 TCP 堆栈。 - 11
- 配置 Data Grid 集群,以使用 secure JGroups 堆栈。
验证
当您启动 Data Grid 集群时,以下日志消息表示集群使用 secure JGroups 堆栈:
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
只有在它们使用 ASYM_ENCRYPT 且可以从协调器节点获取 secret 密钥时,数据网格节点才能加入集群。否则,以下信息会写入 Data Grid 日志:
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
参考
此流程中的 ASYM_ENCRYPT 配置示例显示了常用的参数。如需完整的可用参数集合,请参阅 JGroups 文档。