java.net.Exception socketexception: Connection reset
Je suis codage d'une application où je contrôle le code de la fois le client et le serveur.
Je suis à l'aide de SSLSockets à mettre en œuvre.
J'ai le protocole déjà en cours d'exécution avec la normale non garantis sockets, mais quand j'essaie de passer à SSLSockets (en utilisant exactement le même protocole), je reçois le suivant trace de la pile:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:782)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:739)
Pour une raison quelconque, exactement le même code fonctionne parfaitement avec les sockets non garantis. Pourquoi pourrait-il être?
Tout commentaire serait apprécié. Merci.
Pablo
- Pour s'assurer qu'il est vraiment un problème de logiciel, essayez d'exécuter sur une autre machine en utilisant une autre connexion internet. Il pourrait être un bug logiciel, mais la dernière fois que j'ai vu ce symptôme, un routeur défectueux est à blâmer.
Vous devez vous connecter pour publier un commentaire.
À partir de votre post, il n'est pas possile de détecter le problème.
Lorsque vous passez à secure sockets les plus sûrs sont les algorithmes utilisés par défaut.
Si vous n'avez pas configuré votre truststore/keystore correctement (ou n'ont pas permis à la non-authentifié suites) puis le handshake SSL échouera.
L'exception semble indiquer que.
Ce que vous pouvez faire est d'exécuter votre programme à l'aide
javax.net.debug=ssl,handshake
pour activer SSL infos de débogage et d'afficher les informations de débogage et de votre code si vous attendez quelqu'un pour vous aider.Selon le système d'exploitation que vous utilisez, il peut exiger admin/root priveledges à se lier à ou écouter le port SSL. Essayez d'exécuter votre application avec des droits d'administrateur (Windows) ou sudo avais (sur Linux).
Raisons peuvent varier, -Djavax.net.debug=ssl est votre ami, comme suggéré par Vladimir Dyuzhev.
De toute façon, il peut être un problème de certificat-assurez-vous que vous avez la bonne keystore et le fichier de clés certifiées. Vous aurez besoin d'une entrée dans le fichier de clés avec:
Et un truststore:
J'ai des problèmes de production de bon magasin de clés (fichier de clés certifiées est facile: suffit d'utiliser keytool). Pour de magasin de clés, vous devez st comme ça (Linux, avec openssl + java):