gpt4 book ai didi

ssl - 使用 SSL 的 IBM i DB2 JDBC 加密

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:01 25 4
gpt4 key购买 nike

远程服务器是安装了 DB2 的 IBM i (7.1)。我正在尝试使用 SSL 从我的 Windows 机器通过 JDBC 加密链接连接到 IBM i 机器上的这个远程 db2 数据库,我正在使用 jt400-6.7.jar。我可以看到 SSL 在 IBM i 机器上正确配置,因为我在数字证书管理器中看到以下内容:

Current Certificate Store
You have selected to work with the certificate store listed below. The left frame is being refreshed to show the task list for this certificate store. Select a task from the left frame to begin working with this certificate store.

Certificate type: Server or client
Certificate store: *SYSTEM
Certificate store path and filename:
/QIBM/USERDATA/ICSS/CERT/SERVER/DEFAULT.KDB

我点击此链接在我的 IBM i 机器上设置 SSL: https://isupport.krengeltech.com/rxs/setting_up_ssl/

这是我在 Windows 10 机器上执行的 JDBC 程序:

import java.sql.*;

public class IBMiSSLConnect
{
public static void main(String[] args) throws Exception
{
try
{
Class.forName("com.ibm.as400.access.AS400JDBCDriver");
Connection con = DriverManager.getConnection("jdbc:as400://IBMiMachineIP:5021/DBNAME&secure=true", "USER", "PASSWORD");

}
catch(Exception e)
{
System.out.println(e.getMessage());
}

}
}

我收到以下错误:

[PWS0082] 库未添加到库列表中。

但是如果我按如下方式替换 url(添加系统库):

Connection con = DriverManager.getConnection("jdbc:as400://IBMMiMachineIP:5021/DBNAME;naming=system;libraries=QSYS;secure=true", "USER", "PASSWORD");

我收到以下错误:

申请者无法建立连接。 (sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径)

我有两个问题:

问题 1:使用 SSL 的 JDBC 加密是否总是需要在 url 中添加命名和库?
像这样:

dbc:as400://someserver;naming=system;libraries=devfiles,prodfiles,sysibm,etc

我指的是这个链接:

How can I insert additional libraries to my jdbc/DB2 connection?

问题 2:我应该使用 secure 还是 sslConnection 作为 url 参数?即:

a: jdbc:as400://IBMMiMachineIP:5021/DBNAME&secure=true

b: jdbc:as400://IBMMiMachineIP:5021/DBNAME&sslConnection=true

*注意:我已经对信任库文件 default.kdb 和 default.rdb 的 SSL 权限进行了更改,如下所述:

https://isupport.krengeltech.com/rxs/configuring_ssl_permissions/

最佳答案

Q1。不,您不需要在使用 SSL 时添加命名和库属性。

Q2。您不应将 :5021 用作 URL 的一部分。它目前被忽略,但将来可能会被使用。您应该使用 secure=true 来获取 SSL 连接。

我怀疑您的问题是客户端系统上的 JVM 使用的信任库没有您的证书颁发机构的证书(看起来您在服务器上使用的是自签名证书)。如果仍有问题,请在启动 java 时使用以下命令在客户端上打开 SSL 跟踪:

-Djavax.net.debug=ssl:handshake:verbose

请注意,jt400.jar 附带一个 jdbcClient,因此您可以使用它来测试您的连接。以下是使用 SSL 连接的示例。在这种情况下,cacerts 是包含签署服务器证书的 CA 的证书的信任库。

java -Djavax.net.debug=ssl:handshake:verbose -Djavax.net.ssl.trustStore=cacerts -jar jt400.jar 'jdbc:as400:SYSTEM;secure=true' 用户 ID 密码

这将显示 JVM 正在进行的 SSL 协商。

关于ssl - 使用 SSL 的 IBM i DB2 JDBC 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48888557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com