无法使用带有 securityMechanism=13 的 DataGrip 连接到 DB2

Posted

技术标签:

【中文标题】无法使用带有 securityMechanism=13 的 DataGrip 连接到 DB2【英文标题】:Can't connect to DB2 with DataGrip with securityMechanism=13 【发布时间】:2020-10-20 11:36:18 【问题描述】:

我正在尝试使用 DataGrip 与 DB2 数据库建立连接。对于连接securityMechanism=13 是必需的。

连接失败并显示以下消息:

[-4223] [jcc][1071][10615][3.68.61] 抓到 初始化时出现 java.security.InvalidAlgorithmParameterException 加密管理器。详见附件 Throwable。 ERRORCODE=-4223,SQLSTATE=null DH 密钥大小必须是 64 的倍数,并且 只能从 512 到 8192(含)。具体密钥大小 256 不支持。

我们使用了以下字符串:

 jdbc:db2://<ip-adress>:<port>/<schema>:securityMechanism=13;

当我们禁用安全措施时,我们可以连接到数据库,但一旦启用 ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY,我们就无法建立连接。

我们还使用 DataStudio,通过这个应用程序可以创建到 DB2 数据库的 jdbc 连接。我们更喜欢使用 DataGrip,因为我们需要维护不同类型的数据库,而这在 DataStudio 中是不可能的。

【问题讨论】:

比较在成功案例 (IBM DataStudio) 和失败案例 (DataGrip) 中使用的 jvm/jdk/jre 的确切版本。您可能会发现失败案例使用 java 11 或更高版本,如果是这样,那么此技术说明将给出原因:ibm.com/support/pages/jdbc-data-encrypt 【参考方案1】:

来自Security under the IBM Data Server Driver for JDBC and SQLJ的仅供参考

重要提示:DATA_ENCRYPT 身份验证类型已弃用,可能会在未来版本中删除。

要加密客户端与 Linux®、UNIX 和 Windows 系统数据库上的 Db2® 之间传输的数据,我们建议您使用安全套接字层 (SSL) 的 Linux、UNIX 和 Windows 系统数据库系统支持的 Db2 .

来自https://www.ibm.com/support/pages/jdbc-data-encrypt

从 db2 v11 开始不支持 Data_encrypt。没有计划在 openJDK 11 中支持 DATA_ENCRYPT。建议使用 SSL。

【讨论】:

【参考方案2】:

DataGrip 使用 JAVA 11 而DATA_ENCRYPT 不支持 JAVA 11

【讨论】:

您的第一语言可能不是英语。写“不工作”是不正确的,因为 IBM 故意删除了对这个特性的支持。所以它是“按设计”的。它按照 IBM 的预期工作。 IBM 强制您将 Db2 实例和客户端配置为使用 SSL/TLS。

以上是关于无法使用带有 securityMechanism=13 的 DataGrip 连接到 DB2的主要内容,如果未能解决你的问题,请参考以下文章

无法使用存储过程过滤带有 % mysql 的行

无法使用 % url % 模板标签正确生成带有捕获参数的 URL

无法使用 AFNetworking 发布带有数组的字典

无法使用带有自定义单元的 BaseButtonBarPagerTabStripViewController 连接 XLPagertabStrip 插座

我无法使用带有 jquery 的 Handsontable 加载数据

带有 $cond 的 MongoDB 聚合管道 $addFields - 无法使用变量