使用 JDBC 瘦客户端通过 SSL 连接到 Ignite 集群

Posted

技术标签:

【中文标题】使用 JDBC 瘦客户端通过 SSL 连接到 Ignite 集群【英文标题】:Connect to Ignite Cluster over SSL using JDBC Thin Client 【发布时间】:2020-02-15 06:23:27 【问题描述】:

虽然,我已经在所有 Ignite 节点之间设置了 SSL,并且整个 Ignite 集群是安全的,但我能够通过 JDBC 瘦客户端访问数据,而无需传递任何 SSL 配置。这是否意味着尽管集群是安全的,但我们可以在不通过任何 ssl 配置/证书的情况下进行连接?

我希望没有人可以连接到 Ignite 集群,除非提供所需的 ssl 证书,这是否可能实现?

【问题讨论】:

【参考方案1】:

您需要为瘦协议显式启用 SSL:

https://www.gridgain.com/docs/latest/developers-guide/thin-clients/getting-started-with-thin-clients#enabling-ssltls-for-thin-clients

<property name="clientConnectorConfiguration">
    <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
        <property name="sslEnabled" value="true"/>
    </bean>
</property>

【讨论】:

您还需要为ConnectorConfiguration 和 REST(如果使用)启用 SSL 以覆盖所有基础。 @Michael 添加以下属性后,尝试访问 JDBC 瘦客户端时出现以下错误错误:无法连接到 Ignite 集群 [url=jdbc:ignite:thin://node1.example.com :10800/PUBLIC] (state=08001,code=0) 原因:java.io.IOException: 读取传入消息失败(数据不足)。 @sandipbhowmik 这意味着现在 SSL 已启用,您需要在连接字符串中向您的 jdbc 客户端提供 ssl 证书,如下所示:“jdbc:ignite:thin://127.0.0.1/?sslMode=要求" + "&sslClientCertificateKeyStoreUrl=" + "path/to/certifficate.jks" + "&sslClientCertificateKeyStorePassword=password" + "&sslTrustCertificateKeyStoreUrl=" + "path/to/trustCerts.jks" + "&sslTrustCertificateKeyStorePassword=password"

以上是关于使用 JDBC 瘦客户端通过 SSL 连接到 Ignite 集群的主要内容,如果未能解决你的问题,请参考以下文章

通过 JDBC 连接到 postgres 服务器时 sslmode 参数的默认值?

通过SSL将IBM DB2 JDBC连接到编目数据库

通过带有 SSL 的 JDBC 连接到 Google Cloud PostgreSQL

如何使用 Apache Ignite.NET 瘦客户端连接到特定网格

如何使用SSL JDBC连接到MySQL服务器

如何使用 Python 通过 SSL 连接到远程 PostgreSQL 数据库