我正在尝试使用带有SSL的python模块ibm_db连接到DB2,并且出现以下错误

 conn = ibm_db.connect("DATABASE=myDB;HOSTNAME=xx.xx.xxx.xxx;PORT=nnn;PROTOCOL=TCPIP;SECURITY=SSL;SSLServerCertificate=./myFile.arm;UID=<username>;PWD=<password>;","","")
stmt = ibm_db.exec_immediate(conn, "delete from myschema.mytable")


我得到以下异常

   Exception: [IBM][CLI Driver] SQL30081N  A communication error has been detected. Communication protocol being used: "SSL".  Communication API being used: "SOCKETS".  Location where the error was detected: "".  Communication function detecting the error: "sqlccSSLSocketSetup".  Protocol specific error code(s): "414", "*", "*".  SQLSTATE=08001 SQLCODE=-30081


我花了几个小时尝试调试。在这里无法取得任何进展

任何帮助将不胜感激。

最佳答案

丁尼亚姆

如何创建gskit密钥库(即.kdb)和隐藏文件(即.sth文件-存储密钥库加密密码的文件)?
它是在客户端计算机上以相同版本在本地创建的,还是由其他计算机上具有gskit版本的其他人创建的?

存在一个已知的gskit不兼容问题(http://www-01.ibm.com/support/docview.wss?uid=swg22014693)。由GSKit 8.0.50.69版和更高版本生成的存储文件无法由较低版本读取,它将完全返回gskit 414错误。

检查gskit,了解创建密钥库和存储文件的位置以及客户端使用的版本。 sqllib / gskit / bin中有一个gsk8ver_64工具可以告诉您版本。

如果确实确实遇到了不兼容问题,则需要升级客户端以使用在较新的边界发行版上具有gskit的Db2的版本,或者:查找较旧的Db2服务器版本(例如10.5 fp9)并生成新的密钥库,并使用gskit较低版本的存储文件。

注意:较新版本的gskit可以读取较低版本创建的存储。但是低于8.0.50.69发行版的gskit版本无法读取由8.0.50.69和更高版本创建的隐藏文件。

希望这有助于解决您的问题。

凯文·西

Db2混合云安全团队

07-28 06:54