第 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 文件密钥存储。
流程
- 打开 Data Grid Server 配置进行编辑。
-
将含有 Data Grid Server 的 SSL/TLS 身份的密钥存储添加到
$RHDG_HOME/server/conf目录中。 -
在 Data
Grid 服务器安全域中添加服务器事件定义。 -
使用
path属性指定密钥存储文件名。 -
为密钥存储密码和证书别名
提供密钥存储密码和别名属性。 - 保存对您的配置的更改。
后续步骤
使用信任存储配置客户端,以便他们可以验证用于 Data Grid 服务器的 SSL/TLS 身份。
密钥存储配置
XML
<server xmlns="urn:infinispan:server:14.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 客户端中使用的证书。
流程
- 打开 Data Grid Server 配置进行编辑。
-
在服务器配置中,包含
keystore元素的generate-self-signed-certificate-host属性。 - 将服务器证书的主机名指定为值。
- 保存对您的配置的更改。
生成的密钥存储配置
XML
<server xmlns="urn:infinispan:server:14.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"
6.1.2. 配置 TLS 版本和密码套件 复制链接链接已复制到粘贴板!
当使用 SSL/TLS 加密来保护部署时,您可以将 Data Grid 服务器配置为使用特定的 TLS 协议版本以及协议中的特定密码套件。
流程
- 打开 Data Grid Server 配置进行编辑。
-
将
engine元素添加到 Data Grid Server 的 SSL 配置中。 将 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" />将 Data Grid 配置为使用
enabled-ciphersuites属性(用于 TLSv1.2 及以下)以及enabled-ciphersuites-tls13属性(用于 TLSv1.3)的一个或多个加密套件。您必须确保设置支持计划使用的任何协议功能的密码套件,例如
HTTP/2 ALPN。- 保存对您的配置的更改。
SSL 引擎配置
XML
<server xmlns="urn:infinispan:server:14.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"