我正在尝试通过提供SSLClientKeystoredb的Python连接到DB2 JDBC数据库。
这是我一直尝试连接到数据库的方式:
import ibm_db
arg1 = "DRIVER={IBM DB2 ODBC DRIVER};" + "DATABASE=databasename;HOSTNAME=" + "server" + ";PORT=" + "111111" + ";PROTOCOL=TCPIP;UID=" + "userId" + ";PWD=" + "password" + ";SECURITY=ssl" + ";SSLClientKeystoredb=" + "C:/Users/path/db2_ssl_keydb.kdb" + ";SSLClientKeystash=" + "C:/Users/path/db2_ssl_keydb.sth"
conn=ibm_db.connect(arg1, "", "")
我一直收到这个错误:
SQLCODE=-1109M][CLI Driver] SQL1109N The command was not processed because the database manager failed to load the following DLL: "GSKit Error: 202". SQLSTATE=42724
我安装了GSKit8加密和GSKit SSL64位。任何帮助都将不胜感激!
发布于 2018-07-28 01:38:35
通过切换到python 2.7.9,并将SSL的路径更改为证书的"C:\SSL“,解决了此问题。不确定更改路径是否有帮助,但只想提到这一点,以供将来参考。
发布于 2018-07-27 17:25:29
在DB2Client工作站上,您可以避免将GSK8作为单独的组件进行安装/配置,并且仍然具有到DB2LUW服务器的加密的SSL连接。
请注意,由于其他原因(其他非GSK8应用程序),您可能需要在客户端工作站上使用DB2DB,但这是另一回事。
在MS-Windows上,有两种方法可以避免为Db2 SSL连接安装GSK8,但在这个答案中我提到了一种方法。
从技术上讲,这个特性在V10.5fixpack5DB2-clients中可用,但是有一些but,所以我建议避免使用该修复包,而从fixpack 8或更高版本开始。此功能也适用于V11.1DB2-clients。
如果您有ARM格式的服务器证书,那么您可以在连接字符串中使用SSLSERVERCERTIFICATE和SECURITY关键字,以便从Python (或任何使用Db2 CLI库的工具)使用SSL进行连接。
使用这种方法,您不需要手动创建密钥库和存储,也不需要在连接字符串中使用SSLClientKeystoredb等。
您仍然需要在静态和分发期间为ARM文件添加适当的安全性。
这种方法可能更容易管理,示例连接如下:
try:
arg1="DATABASE=whatever;HOSTNAME=whatever;PORT=50443;UID=whavever;PWD=whatever;SSLServerCertificate=/path_to/db2server_instance.arm;SECURITY=ssl;"
conn = ibm_db.connect(arg1,"","")
except:
logging.error('Error: Failed to connect to database: %s', ibm_db.conn_errormsg())
sys.exit(1)
发布于 2021-08-22 10:57:37
不知道它是否有帮助,但当我通过“以管理员身份运行”启动gitBash /命令提示符时,它对我起作用了。在我使用
conn=ibm_db.connect("Database=****DB; Hostname=***.***.***.COM; PORT=****; Security=ssl; SSLClientKeystoredb=c:/keystore/ibmca.kdb; SSLClientKeystash=c:/keystore/ibmca.sth;UID= ; PWD= ;",'','')
https://stackoverflow.com/questions/51547423
复制相似问题