我正在尝试使用带有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混合云安全团队