簡體   English   中英

使用帶有 SSL 的 ibm_db 連接到 DB2 時出錯

[英]Error when connecting to DB2 with ibm_db with SSL

我正在嘗試使用帶有 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 混合雲安全團隊

我今天在打開從 Db2 客戶端到 Db2 服務器的 SSL 連接時遇到了同樣的問題。 SQL30081N 錯誤代碼為 414。Db2 文檔指向此https://www.ibm.com/support/knowledgecenter/en/SSVJJU_6.3.0/com.ibm.IBMDS.doc/progref506.htm並且提示為 414 – 格式不正確從合作伙伴處收到的證書。

后來我們發現,我們剛剛將服務器的公鑰導入到客戶端信任密鑰環中。 正確的是只將根服務器和中間服務器的公鑰導入客戶端信任庫。 您不需要將服務器公鑰(由中間服務器簽名)導入客戶端信任庫。

我希望,原來的海報已經找到了解決方案,我只是想把我的解決方案留在這里給下一個有同樣問題的人。

我建議調查 SSL / TLS 通信的配置方式以及證書的管理方式。

特定於 SSL 的錯誤記錄為與證書相關的 GSKit 問題 您可能已經檢查了錯誤 SQL30081N建議 錯誤 SQL30081N 甚至包含錯誤代碼的特定協議的詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM