我(从几天以来)一直在努力通过ssl连接到as400上的db2数据库。 对于使用jaydebeapi的数据库连接,以及使用安全连接访问数据库,我需要通过jpype函数将信任库位置和信任库密码附加到JVM。 以下是我到目前为止所做的一件事:
import jaydebeapi
import os
import jpype
import pandas as pd
from credentials_getter import get_db2_credentials
class i5Connection:
def __init__(self, user, password):
if jpype.isJVMStarted():
print("already started!")
filepath_script = os.path.dirname(os.path.abspath(__file__))
ssl_trust_store_location = filepath_script + "/database/java-certs.jks"
jar = filepath_script + '/database/jt400.jar'
jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path,
'-Djava.class.path=%s' % jar,
'-Djavax.net.ssl.trustStore=%s' % ssl_trust_store_location +
'-Djavax.net.ssl.trustStorePassword=pw')
connection_string = 'jdbc:as400://172.17.0.1/library'
print(connection_string)
self.conn = jaydebeapi.connect('com.ibm.as400.access.AS400JDBCDriver',
connection_string,
{'user': user,
'password': password,
'secure': 'true'},
filepath_script + '/database/jt400.jar')
现在,我遇到以下错误消息:
jpype._jexception.java.sql.SQLExceptionPyRaisable: java.sql.SQLException: The application requester cannot establish the connection. (PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target)
如果我从startJVM调用中删除trustStoreLocation、password和jaydebeapi调用的secure参数,它就会工作(不加密) 谁能告诉我我做错了什么吗?有没有我还没有找到的好的ibm文档
编辑:我找到了一个解决方法:我刚刚通过keytool:How do I import an existing Java keystore (.jks) file into a Java installation?手动将证书保存到cacert 这不是一个真正的解决方案,但如果有人也陷入困境,希望能有所帮助
这不是JayDeBeApi解决方案,但我可以使用Python在Mac和Windows上通过加密连接using this solution连接到HANA
相关问题 更多 >
编程相关推荐