2016-10-04 48 views
0

我一直在嘗試使用Bluemix的安全網關服務將我的Node.js公共Bluemix應用程序連接到位於防火牆後面的DB2服務器。當我嘗試使用TCP時,一切正常。我現在試圖使用TLS:相互驗證選項,我無法使其工作。使用Bluemix安全網關和TLS連接到內部DB2服務器

我跟着本教程(https://developer.ibm.com/bluemix/2015/04/17/securing-destinations-tls-bluemix-secure-gateway/)和隧道似乎被創建(我可以看到在網關客戶端的日誌),但沒有數據通過。

在對象Options這是tls.connect參數,如果設置了rejectUnauthorized: true然後我得到「UNABLE_TO_GET_ISSUER_CERT」,而我使用的目的地生成的證書。如果我設置了rejectUnauthorized: false,那麼它似乎工作,並且連接打開但沒有任何通過,它只是掛起。在這兩種情況下,我使用的是與未設置TLS時相同的代碼,該代碼基於DB2的ibm_db節點驅動程序。

有沒有人有這方面的經驗,我一直在爲它奮鬥了幾天,現在任何幫助將不勝感激。

+0

嘗試與TLS建立連接時,您會在客戶端上獲得適當的日誌以嘗試連接?如果您的數據庫正在等待TLS連接,您是否更新了Secure Gateway中的目的地以指定目的地端需要使用TLS(並可能將相應的證書從服務器上傳到目的地)? –

回答

0

經過一番討論後,我們確定問題的一部分是明確指出CA中的一個證書鏈,導致發出UNABLE_TO_GET_ISSUER_CERT錯誤。這可以通過將完整鏈添加到CA或不向CA明確添加任何內容(因爲該證書是公開簽名的)來解決。

已確定的根本問題是DB2的ibm_db節點驅動程序似乎無法按預期對TLS連接起作用。