在Python中使用sslclientkeysteredb连接DB2

2024-09-27 00:14:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过提供sslclientkeysteredb的Python连接到db2jdbc数据库。在

这就是我一直试图连接到数据库的方式:

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, "", "")

我一直收到这个错误:

^{pr2}$

我安装了gskit8crypt和gskitsll64位。任何帮助都将不胜感激!在


Tags: pathimport数据库ssldbdriver方式ibm
3条回答

“202-GSK密钥环打开错误

无法打开密钥文件或Microsoft证书存储。路径指定不正确,或者文件权限不允许打开文件,或者文件格式不正确。“

arg1传递给ibm.数据库格式不正确,并且在分配SSLClientKeystash后缺少分号。尝试以下操作:IBM Support

在Db2客户机工作站上,可以避免将GSK8作为单独的组件进行安装/配置,并且仍然具有到db2luw服务器的加密SSL连接。在

注意,出于其他原因(其他非Db2应用程序),您可能需要在客户机工作站上使用GSK8,但这是另一回事。在

在mswindows上,有两种方法可以避免为db2ssl连接安装GSK8,但是在这个答案中我提到了一种方法。在

从技术上讲,这个特性在V10.5fixpack5db2客户机上可用,但是有一些bug,所以我建议避免使用fixpack,从fixpack8或更高版本开始。这个功能也适用于V11.1db2客户机。在

如果您有ARM格式的服务器证书,那么可以使用SSLSERVERCERTIFICATE和连接字符串中的SECURITY关键字从Python(或任何使用db2cli库的工具)连接SSL。在

使用这种方法,您不需要手动创建密钥库和存储库,也不需要在连接字符串中使用sslclientkeysteredb等。在

您仍然需要为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)

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

相关问题 更多 >

    热门问题