我试图通过Python连接到DB2 JDBC数据库,并提供SSLClientKeystoredb。
这是我一直尝试连接到DB的方式:
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
我安装了两个gskit 8加密和gskitssl 64位。任何帮助将不胜感激!
4条答案
按热度按时间wztqucjr1#
在Db2客户端工作站上,您可以避免将GSK 8安装/配置为单独的组件,并且仍然具有到Db2-LUW服务器的加密SSL连接。
请注意,由于其他原因(其他非Db2应用程序),您可能需要在客户端工作站上使用GSK 8,但这是另一回事。
在MS-Windows上,有两种方法可以避免为Db2 SSL连接安装GSK 8,但在此答案中我只提到一种方法。
从技术上讲,这个特性在V10.5 fixpack 5 Db2客户端上可用,但是有一些bug,所以我建议避免使用该fixpack,从fixpack 8或更高版本开始。这个功能在V11.1 Db2客户端上也可以使用。
如果您有ARM格式的server-certificate,那么您可以在connection-string中使用SSLSERVERCERTIFICATE和SECURITY关键字,通过Python(或使用Db2 CLI库的任何工具)使用SSL进行连接。
使用这种方法,您不需要手动创建密钥存储库和存储库,也不需要在连接字符串中使用SSLClientKeystoredb等。
您仍然需要为ARM文件在静态和分发期间添加适当的安全性。
此方法可能更易于管理,连接示例如下:
7gcisfzg2#
我不知道它是否有用,但是当我通过“以管理员身份运行”启动gitBash /命令提示符时,它对我很有效。
oaxa6hgo3#
“202 - GSK密钥环打开错误
无法打开密钥文件或Microsoft证书存储区。指定的路径不正确,文件权限不允许打开文件,或者文件格式不正确。
传递到ibm.db的arg 1格式不正确,并且在分配SSLClientKeystash后缺少分号。请尝试执行以下操作:IBM Support
8gsdolmq4#
这个问题通过切换到python 2.7.9并将证书的SSL路径更改为“C:\SSL”得到了解决。不确定更改路径是否有帮助,但只是想提一下以供将来参考。