跳到主要内容

在PubSub+ JCSMP API中创建安全会话

使用 PubSub+ JCSMP API 的客户端可以选择创建安全会话,这些会话需要可信的服务器证书才能建立到 PubSub+ 事件代理的 TLS/SSL 加密客户端连接。当创建安全会话时,SMF 信息将使用 TCP 上的 TLS/SSL 而不是明文 TCP 进行传输。

要创建安全会话,必须指定一些 TLS/SSL 特定的会话属性,如下所述。此外,安全会话将连接到的事件代理必须正确配置,并且必须有适当的服务器证书。有关配置事件代理以允许安全连接的信息,请参阅 TLS/SSL 服务配置。

有关如何创建和连接安全会话的示例,请参阅 Solace 开发者中心中的 SecureSession 示例。此外,您可以通过在示例中使用的主机名前加上 “tcps:” 来在其他示例中使用安全会话(参阅主机)。

TLS/SSL特定属性

要创建安全会话,必须配置以下会话属性。

属性用途描述
主机JCSMPProperties.HOST每个 TLS/SSL 连接的主机条目都需要适当的 TLS/SSL 协议,并且可以指定特定的 TLS/SSL 端口号。
如果未指定端口号,则使用默认端口 55443。
有关配置主机的信息,请参阅主机。
SSL 排除的协议JCSMPProperties.SSL_EXCLUDED_PROTOCOLS一个以逗号分隔的加密协议列表,这些协议不能用于安全连接。可能的值包括:
  • TLS v1.1 (TLSv1.1)
  • TLS v1.2 (TLSv1.2)
  • TLS v1.3 (TLSv1.3)
    有关 SSL v3.0、TLS v1.0、TLS v1.1、TLS v1.2 和 TLS v1.3 的特定值偏好,请参阅相关文档。默认列表为空,表示可以使用任何加密协议(不排除任何协议)。
    此属性已取代已废弃的 SSL 协议属性。Solace 建议尽快切换到新属性。您不能同时使用 SSL 排除协议和 SSL 协议。 | | SSL 证书验证 | JCSMPProperties.SSL_VALIDATE_CERTIFICATE | 指示 API 是否应使用信任库中的可信证书验证服务器证书。
    对于 PubSub+ JCSMP API,使用 JKS 或 PKCS12 证书文件作为信任库。 | | SSL 证书日期验证 | JCSMPProperties.SSL_VALIDATE_CERTIFICATE_DATE | 指示当收到过期证书或尚未使用的证书时,会话连接是否应失败。默认值为 True
    如果 SSL 证书验证属性设置为 False,则不执行证书日期验证。 | | SSL 证书主机验证(使用主题备用名称进行 SSL 服务器证书验证) | JCSMPProperties.SSL_VALIDATE_CERTIFICATE_HOST | 指示会话连接是否验证 X.509 证书中的主题备用名称。如果 X.509 证书中不包含主题备用名称部分,则验证 X.509 证书主题字段中的通用名称与主机属性是否匹配。默认和推荐设置为 True
    如果 SSL 证书验证属性设置为 False,则不执行证书主机验证。 | | SSL 密码套件 | JCSMPProperties.SSL_CIPHER_SUITES | 一个以逗号分隔的密码套件列表,按重要性顺序排列,用于与事件代理协商。
    密码套件是一组定义用于身份验证、密钥协商、加密和完整性保护的安全算法和密钥大小的加密参数。
    PubSub+ JCSMP API 10.27 及更高版本支持 TLS 1.3。对于 TLS 1.3,密码套件通过 JVM 安全模块控制,如果与事件代理协商的连接是 TLS 1.3,则忽略 JCSMPProperties.SSL_CIPHER_SUITES 属性。 | | SSL 可信存储目录 | 不适用 | 存储可信证书的目录。 | | SSL 信任库(基于文件) | JCSMPProperties.SSL_TRUST_STORE | 要使用的信任库文件。对于 PubSub+ JCSMP API,信任库文件(以 URL 或路径格式)。如果 SSL_VALIDATE_CERTIFICATE 属性设置为 True,则此属性是必需的。 | | SSL 信任库(内存中) | JCSMPProperties.SSL_IN_MEMORY_TRUST_STORE | 指示作为内存中信任库可用的可信证书。对于 PubSub+ JCSMP API,内存中的存储以 java.security.KeyStore 格式。使用此属性时不需要 SSL_TRUST_STORE_PASSWORD 属性。只能使用 SSL_TRUST_STORESSL_IN_MEMORY_TRUST_STORE。您不能混合使用内存中和基于文件(例如,URL 或文件路径)的 SSL 信任库属性。使用内存中信任库时,请记住,在将其传递给 PubSub+ 消息传递 API for JCSMP 后,KeyStore 对象被认为是不可变的。 | | SSL 信任库密码 | SessionHandle.PROPERTIES.SSL_TRUST_STORE_PASSWORD | 指定信任库的密码。对于 PubSub+ JCSMP API,为 SSL_TRUST_STORE_PASSWORD 属性提供的信任库的密码。如果 SSL_VALIDATE_CERTIFICATE 属性设置为 True,则此属性是必需的。 | | SSL 信任库格式 | JCSMPProperties.SSL_TRUST_STORE_FORMAT | 指示 SSL 信任库属性提供的信任库使用的格式。对于 PubSub+ JCSMP API,支持的信任库格式为 JKS(默认值)和 PKCS12。 | | SSL 连接降级为 | SessionHandle.PROPERTIES.SSL_CONNECTION_DOWNGRADE_TO | 指示在客户端身份验证后是否应将 SSL 连接降级。SSL 连接降级为属性允许的传输协议为:“PLAIN_TEXT”。此属性是可选的。 |

TLS/SSL 安全会话属性