Bonjour à tous

J'ai suivi un petit tutoriel sur l'utilisation des socket pour effectuer des échanges de données entre un client et un serveur.

Pour des échanges basiques, cela a l'air de bien fonctionner

Maintenant je souhaiterai sécuriser ces échanges part SSL. mais la je coince dès le départ pour la création de mon serveur.

pour information, j'utilise l'API standart.

voici le petit bout de code :
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
 
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
 
 
public class SSLServeur {
	public static final int port = 8080;
 
 
    public static void main(String[] args) {
    	SSLServerSocketFactory sslfact = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
    	try {
			SSLServerSocket sslssoc = (SSLServerSocket) sslfact.createServerSocket(port);
			SSLSocket socket = (SSLSocket) sslssoc.accept();
		} catch (Exception e) {
			e.printStackTrace();
		}  	
   }
}
en suivant le tuto, il a fallu générer un certificat réaliser avec l'outil keytool

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
keytool -genkey -keystore keys -keyalg RSA
j'ai rentré les informations demandées, le fichier est correctement créer.

développant sous eclipse j'ai mis ce fichier à la racine de mon projet

lors de l'exécution je me retrouve avec l'exception suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
	at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(Unknown Source)
	at SSLServeur.main(SSLServeur.java:15)

Par la suite, j'ai essayé de réaliser les même opération dans le terminal pour tout réaliser à la main.

j'ai placer mon fichier "Keys" dans le répertoire de mes sources java, je me suis placé dans ce répertoire, un petit ensuite j'ai tenter d'exécuter de cette manière :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
java -Djavax.net.ssl.keyStore=keys -Djavax.net.ssl.keyStorePassword=123456 SSLServeur
et la je me prend une autre exception :
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
 
java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com
.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
        at javax.net.ssl.DefaultSSLServerSocketFactory.throwException(Unknown Source)
        at javax.net.ssl.DefaultSSLServerSocketFactory.createServerSocket(Unknown Source)
        at SSLServeur.main(SSLServeur.java:14)
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.in
ternal.ssl.DefaultSSLContextImpl)
        at java.security.Provider$Service.newInstance(Unknown Source)
        at sun.security.jca.GetInstance.getInstance(Unknown Source)
        at sun.security.jca.GetInstance.getInstance(Unknown Source)
        at javax.net.ssl.SSLContext.getInstance(Unknown Source)
        at javax.net.ssl.SSLContext.getDefault(Unknown Source)
        at javax.net.ssl.SSLServerSocketFactory.getDefault(Unknown Source)
        at SSLServeur.main(SSLServeur.java:12)
Caused by: java.security.UnrecoverableKeyException: Password must not be null
        at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
        at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source)
        at java.security.KeyStore.getKey(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SunX509KeyManagerImpl.<init>(Unknown Source)
        at com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509.engineInit(Unknown Source)
        at javax.net.ssl.KeyManagerFactory.init(Unknown Source)
        at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(Unknown Source)
        at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        ... 7 more
les exception semble m'insulter à propos du fichier généré avec keytool ?

enfin la je suis largué !

Si une bonne âme trouve une solution à ce problème, je l'en remercie d'avance

d'après le tuto, il n'y a pas grand chose d'autre a faire !