Bonsoir à tous,
Voilà déjà de nombreuses heures que j'arpente les documentations et les nombreux exemples sur divers sites web mais rien n'y fait... impossible de dialoguer en Telnet SSL avec ma box
Mes premières recherches se sont bien évidemment portées sur le protocol SSL :
- récupération de certificat
- choix d'algorythmes de cryptographie
- échange de clefs
Alors tout ça c'est bien beau mais en java, qu'est-ce que ça donne?
On peut voir la méthode "startHandshake" à la ligne 36 qui est sensée négocier avec le serveur ce qui concerne la sécurisation de la connexion. Après l'appel de cette méthode, on peut logiquement échanger des données de façon sécurisé avec le serveur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; public class SSL { public static final byte[] ip = new byte[]{(byte)192,(byte)168,(byte)1,(byte)1}; public static final String[] suites = {"TLS_KRB5_WITH_RC4_128_SHA", "TLS_KRB5_WITH_RC4_128_MD5", "TLS_KRB5_WITH_3DES_EDE_CBC_SHA", "TLS_KRB5_WITH_3DES_EDE_CBC_MD5", "TLS_KRB5_WITH_DES_CBC_SHA", "TLS_KRB5_WITH_DES_CBC_MD5", "TLS_KRB5_EXPORT_WITH_RC4_40_SHA", "TLS_KRB5_EXPORT_WITH_RC4_40_MD5", "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"}; public static final String[] protocols = {"SSLv2Hello", "SSLv3", "TLSv1"}; public static void main(String[] args) { SSLSocketFactory sslfact ; SSLSocket sslsock; try { sslfact = (SSLSocketFactory) SSLSocketFactory.getDefault(); sslsock = (SSLSocket) sslfact.createSocket(InetAddress.getByAddress(ip), 992); sslsock.setEnabledCipherSuites(suites); sslsock.setEnabledProtocols(protocols); sslsock.setEnableSessionCreation(true); sslsock.setNeedClientAuth(false); sslsock.setWantClientAuth(false); sslsock.setUseClientMode(true); sslsock.startHandshake(); sslsock.close(); } catch (UnknownHostException e){e.printStackTrace();} catch (IOException e){e.printStackTrace();} } }
Cependant cette méthode me lève une exception
Voici le log :
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at SSL.main(SSL.java:36)
Quelqu'un aurait-il une idée du pourquoi cette exception est levée? Et surtout, comment résoudre ce problème ?
Merci d'avance !
Cordialement,
REMYY
Partager