Maison  >  Article  >  Java  >  Comment réutiliser la même session TLS pour les connexions de données dans FTPS à l'aide d'Apache Commons Net ?

Comment réutiliser la même session TLS pour les connexions de données dans FTPS à l'aide d'Apache Commons Net ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-10 06:58:02847parcourir

How to Reuse the Same TLS Session for Data Connections in FTPS using Apache Commons Net?

Comment établir une connexion de données avec la même session TLS à l'aide de FTPS ?

Le maintien de la même session TLS pour les connexions de contrôle et de données est une mesure de sécurité cruciale dans FTPS . Certains serveurs FTP appliquent cette exigence, provoquant des problèmes lorsque la connexion de données tente d'établir une session TLS distincte.

Dans Apache Commons Net, ce problème peut survenir en raison de sa configuration par défaut, qui suppose une nouvelle session pour chaque hôte. /combinaison de ports. Pour résoudre ce problème, envisagez les mesures suivantes :

  1. Vérifiez la conformité du serveur : Assurez-vous que le serveur FTPS applique la même exigence de session TLS. Consultez la documentation du serveur ou utilisez un client comme FileZilla pour confirmer.
  2. Personnalisez Apache Commons Net : Implémentez un FTPSClient personnalisé qui remplace la méthode "_prepareDataSocket_". Reportez-vous au code FTPClient.java de Cyberduck pour savoir comment configurer la mise en cache et la réutilisation des sessions TLS.
  3. Remplacer l'intégration Spring DefaultFtpsSessionFactory : Créez une sous-classe personnalisée de DefaultFtpsSessionFactory et remplacez "createClientInstance() " pour renvoyer votre instance FTPSClient modifiée.
  4. Désactiver l'extension du secret principal étendu (JDK 8u161 et supérieur) : Ajoutez la ligne suivante à votre code pour désactiver l'extension du secret principal étendu, qui peut provoquer des problèmes de compatibilité :
System.setProperty("jdk.tls.useExtendedMasterSecret", "false");
  1. Utiliser le champ sessionsByHostAndPort : Pour les versions Java plus récentes, utilisez le champ « sessionsByHostAndPort » au lieu de « sessionHostPortCache » pour accéder au cache de session TLS.
  2. Contourner les restrictions du SDK sur Android : Sur les appareils Android, vous devrez peut-être contourner Restrictions du SDK pour accéder aux champs privés à l'aide de la réflexion.

En mettant en œuvre ces mesures, vous pouvez permettre à Apache Commons Net de réutiliser la session TLS pour la connexion de données, garantissant ainsi la compatibilité avec les serveurs FTPS qui l'exigent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn