ibm_db在Python中使用SSL客户端密钥存储b连接DB2

h43kikqp  于 2022-11-07  发布在  DB2
关注(0)|答案(4)|浏览(210)

我试图通过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位。任何帮助将不胜感激!

wztqucjr

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文件在静态和分发期间添加适当的安全性。
此方法可能更易于管理,连接示例如下:

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)
7gcisfzg

7gcisfzg2#

我不知道它是否有用,但是当我通过“以管理员身份运行”启动gitBash /命令提示符时,它对我很有效。

conn=ibm_db.connect("Database=****DB; Hostname=***.***.***.COM; PORT=****; Security=ssl; SSLClientKeystoredb=c:/keystore/ibmca.kdb; SSLClientKeystash=c:/keystore/ibmca.sth;UID= ; PWD= ;",'','')
oaxa6hgo

oaxa6hgo3#

“202 - GSK密钥环打开错误
无法打开密钥文件或Microsoft证书存储区。指定的路径不正确,文件权限不允许打开文件,或者文件格式不正确。
传递到ibm.db的arg 1格式不正确,并且在分配SSLClientKeystash后缺少分号。请尝试执行以下操作:IBM Support

8gsdolmq

8gsdolmq4#

这个问题通过切换到python 2.7.9并将证书的SSL路径更改为“C:\SSL”得到了解决。不确定更改路径是否有帮助,但只是想提一下以供将来参考。

相关问题