如何使用 FTPS 建立相同 TLS 會話的資料連線?
為控制和資料連線維護相同的 TLS 會話是 FTPS 中至關重要的安全措施。某些 FTP 伺服器強制執行此要求,從而在資料連線嘗試建立單獨的 TLS 會話時導致問題。
在 Apache Commons Net 中,此問題可能是由於其預設配置而出現的,該配置假定每個主機都有一個新會話/連接埠組合。要解決此問題,請考慮採取以下措施:
-
驗證伺服器合規性:確保 FTPS 伺服器強制實施相同的 TLS 會話要求。檢查伺服器文件或使用 FileZilla 等客戶端進行確認。
-
自訂 Apache Commons Net: 實作覆蓋「_prepareDataSocket_」方法的自訂 FTPSClient。請參閱 Cyberduck 的 FTPClient.java 程式碼,以了解如何設定 TLS 會話快取和重複使用的指南。
-
重寫Spring Integration DefaultFtpsSessionFactory: 建立DefaultFtpsSessionFactory 的自訂子類別並重寫「createClientInstance()」 " 傳回修改後的FTPSClient 的方法 將以下行添加到您的程式碼中以停用擴展主金鑰擴展,這可能會導致相容性問題:
- System.setProperty("jdk .tls.useExtendedMasterSecret", "false");
使用sessionByHostAndPort欄位:
對於較新的Java版本,使用「sessionsByHostAndPort」欄位而不是「sessionHostPortCache」來存取TLS會話快取。 -
繞過Android 上的SDK限制:在Android 裝置上,您可以需要繞過SDK 限制以使用反射存取私有欄位。 ,確保與需要它的FTPS 伺服器的兼容性.
以上是如何使用 Apache Commons Net 在 FTPS 中重複使用相同的 TLS 會話進行資料連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!