【问题标题】:ibm_db connect DB2 using SSLClientKeystoredb in Pythonibm_db 在 Python 中使用 SSLClientKeystoredb 连接 DB2
【发布时间】:2018-07-26 20:59:35
【问题描述】:

我正在尝试通过 Python 连接到 DB2 JDBC 数据库,并提供 SSLClientKeystoredb。

这就是我尝试连接数据库的方式:

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 Crypt 和 GSKit SSL 64 位。任何帮助将不胜感激!

【问题讨论】:

    标签: python jdbc db2


    【解决方案1】:

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

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

    在 MS-Windows 上,有两种方法可以避免为 Db2 SSL 连接安装 GSK8,但在这个答案中我提到了一种方法。

    从技术上讲,此功能在 V10.5 修订包 5 Db2 客户端中可用,但存在一些错误,因此我建议避免使用该修订包并从修订包 8 或更高版本开始。此功能也适用于 V11.1 Db2 客户端。

    如果您拥有 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)
    

    【讨论】:

    • 谢谢,非常有用的信息。更改为 python 2.7.9 后,我设法连接到 DB2。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      “202 - GSK_KEYRING_OPEN_ERROR

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

      传递给 ibm.db 的 arg1 格式错误,您在分配 SSLClientKeystash 后缺少分号。试试这个:IBM Support

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多