I forbindlese med et skoleprojekt, forsøger jeg at få RMI til at køre via
SSL, for at opnå sikker kommunikation over internettet. Desværre kan jeg
ikke få det til at virke. Jeg gør følgende:
Jeg benytter standardeksmplet fra, sun, som kommer i filen
jssesamples.zip. Jeg benytter JDK og JRE 1.4.
Alle filer jeg nævner her, har jeg lagt ud på zip.dk/rmi
Placerer policy-filen, der tillader alle at connecte, i roden af d-drevet.
Dernæst omdøber jeg filen samplecacerts til cacerts, og placerer den i
%java_redir%/lib/security/
Nu starter jeg rmiregistry
og når den er startet kører jeg kommandoen:
java -Djava.security.policy=d:\policy HelloImpl
I den mappe hvor de kompillerede (og rmic-kompillerede).class-filer ligger.
Programmet er ca. 1 minut om at give besked om at det er registreret
(hvilket Sun skulle være normalt).
Nu kommer turen til klienten, som jeg kører med kommandoen
java HelloClient
hvilket efter et lille stykke tid, giver følgende exception:
HelloClient exception: Connection refused to host: 192.168.0.2; nested
exception is:
java.net.ConnectException: Connection refused: connect
java.rmi.ConnectException: Connection refused to host: 192.168.0.2; nested
exception is:
java.net.ConnectException: Connection refused: connect
at
sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)
at
sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
at
sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:101)
at HelloImpl_Stub.sayHello(Unknown Source)
at HelloClient.main(HelloClient.java:57)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:295)
at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:161)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:148)
at java.net.Socket.connect(Socket.java:425)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(DashoA6275)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA6275)
at
com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA6275)
at
RMISSLClientSocketFactory.createSocket(RMISSLClientSocketFactory.java:54)
at
sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
... 5 more
Her har jeg siddet fast i flere dage nu, og håber på at der er én der lige
ved hvad det er jeg mangler.
Det skal siges at jeg sagtens kan få RMI-programmer *uden* SSL til at køre.
--
Mvh. Simon Mikkelsen, ingeniørstuderende
Vil du være med til at klargøre første freeware-udgave af
ZIP Stat
www.zipstat.dk, skrevet i Perl, så send mig en mail.