Использование приведенного ниже кода для проверки SSL-соединения через RMI:
public class HelloImpl extends UnicastRemoteObject implements Hello {
public HelloImpl() throws RemoteException {
super(0, new SslRMIClientSocketFactory(), new SslRMIServerSocketFactory());
}
public String sayHello() {
return "Hello World!";
}
public static void main(String args[]) throws Exception {
// Get reference to the RMI registry running on port 3000 in the local host
Registry registry = LocateRegistry.getRegistry(null, 3000);
// Bind this object instance to the name "HelloServer"
HelloImpl obj = new HelloImpl();
registry.bind("HelloServer", obj);
System.out.println("HelloServer bound in registry");
}
}
Остальное довольно общее (взяли часть кода отсюда: http://blogs.oracle.com/lmalventosa/entry/using_the_ssl_tls_based),, в основном пытаясь выполнить аутентификацию только на сервере, чтобы заставить работать SSL. Однако, получая эту ноющую ошибку:
RMI RenewClean-[146.169.51.86:60013,javax.rmi.ssl.SslRMIClientSocketFactory@4a63d8], READ: TLSv1 Alert, length = 2
RMI RenewClean-[146.169.51.86:60013,javax.rmi.ssl.SslRMIClientSocketFactory@4a63d8], RECV TLSv1 ALERT: fatal, bad_certificate
RMI RenewClean-[146.169.51.86:60013,javax.rmi.ssl.SslRMIClientSocketFactory@4a63d8], called closeSocket()
RMI RenewClean-[146.169.51.86:60013,javax.rmi.ssl.SslRMIClientSocketFactory@4a63d8], Exception while waiting for close javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
RMI RenewClean-[146.169.51.86:60013,javax.rmi.ssl.SslRMIClientSocketFactory@4a63d8], handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
из дампа отладки следует, что они пытаются выполнить рукопожатие, вплоть до замены симметричных ключей, но терпят неудачу при этом по какой-то необъяснимой причине. Во время компиляции мы указываем хранилище доверенных сертификатов, которое хранится в папке:
# $ java -Djavax.net.ssl.trustStore=truststore -Djavax.net.ssl.trustStorePassword=trustword HelloClient
Любая помощь высоко ценится!