Salut à tous,
Je suis en train de développer un petit client/serveur en RMI, qui communiquent entre eux sur une couche SSL. Je travaille en java 1.4.2.
Mon serveur :
Et mon client :
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
47
48
49
50
51
52
53
54
55
56
57 package rmissl; import javax.rmi.ssl.SslRMIClientSocketFactory; import javax.rmi.ssl.SslRMIServerSocketFactory; import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; import javax.net.ssl.*; import java.security.*; import java.io.*; public class HelloServer extends UnicastRemoteObject implements HelloInterface { //------------------ // Donnees //------------------ public static final long serialVersionUID = 000; public static RMIClientSocketFactory csf = null; public static RMIServerSocketFactory ssf = null; //------------------ // Methodes de Hello //------------------ public HelloServer() throws RemoteException { super(0, csf, ssf); } public void message() throws RemoteException { System.out.println("Chboum"); } //------------------ // Methode main() //------------------ public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); System.out.println("Hello world !"); try { HelloInterface obj = new HelloServer(); csf = new SslRMIClientSocketFactory(); ssf = new SslRMIServerSocketFactory(); Registry reg = LocateRegistry.createRegistry(2004, csf, ssf); reg.rebind("msg", obj); System.out.println("Server complete."); } catch (Exception e) { e.printStackTrace(); } } }
Là, mon serveur se lance sans problème. À l'exécution du client, voici l'exception que je récupère :
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 package rmissl; import java.rmi.*; import java.rmi.registry.*; import java.rmi.server.*; import javax.rmi.ssl.SslRMIClientSocketFactory; import javax.rmi.ssl.SslRMIServerSocketFactory; public class Client { public static void main(String[] args) { try { System.out.println("Preparation client..."); System.setSecurityManager(new RMISecurityManager()); Registry reg = LocateRegistry.getRegistry("lat203", 2004, new SslRMIClientSocketFactory()); System.out.println("Get registry ok."); Object obj = reg.lookup("msg"); // <- ICI L'EXCEPTION System.out.println("Execution de la routine message."); ((HelloInterface)obj).message(); System.out.println("Execution client ok."); } catch(Exception e) { e.printStackTrace(); } } }
Quelqu'un aurait une idée de ce qui se trame là-dessous ?Preparation client...
Get registry ok.
java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:273)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:306)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at rmissl.Client.main(Client.java:19)
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:117)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1584)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:866)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1030)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:622)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at java.io.DataOutputStream.flush(DataOutputStream.java:106)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
... 4 more
Merci d'avance.
Partager