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?

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();} 
 
	}
}
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.

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