Projects using Java and RMI

See your online JDK documentation for an RMI tutorial and examples.

RMI and SSL

There is interest here in using RMI via SSL for encrypted and authenticated connections. At the moment, that seems like too big of a project to write ourselves. Commercial Java/SSL implementations are available; see the RMI and SSL info on the Java Distributed Systems home page. It may also be possible to implement a JNI interface to the SSLeay C code.

Java and MD5

In the meantime, a project using simple username/password authentication is in progress. Rather than use the Unix crypt() method to encrypt passwords, we will use md5 digests, since md5 is less susceptible to cracking and allows long password lengths. The Apache web servers here, as well as the htpasswd command, have already been modified to use md5. Related source files are available.

I was considering using the Java implementation of md5 from cryptix. This cryptix demo shows that JDK 1.1.6 already includes an md5 implementation, so we will just use that instead of cryptix.

RMI and RSA

This is an example of using a randomly generated RSA key for encrypted authentication of a username/password.

rmiregistry port

Projects using RMI here must run their own rmiregistry server, and to avoid conficts should use a port number different from the default of 1099. Examples of an RMI server, client, and applet which use an alternate rmiregistry port are available.

A second example illustrates the use of java.rmi.registry.LocateRegistry to create and export a registry on the local host, which avoids the need to run a separate rmiregistry process.

A third example implements distributed processing using three machines.

Srinivas Jujjuru is currently working on a Java/RMI project and has more information about it on his web pages.