How to use XML-RPC with SSL
Hello!I'm playing around with XML-RPC package from org.apache.xmlrpc. I mange to create a server with a client with out SSL, but when I try to add SSL to it, it crashes.
First i create a keystore like:
keytool -genkey -alias testkeys -keystore testkeys -keypass password -dname "cn=Fredrik_Andersson" -storepass password
I do not know if I need to create any certificates or something, if I do please tell me how.
The code for this looks like below.
So if you got any solution please let me know.
Best regards
Fredrik
Server:
import java.io.*;
import org.apache.xmlrpc.secure.*;
public class PrimeTimeSecureServer
{
public PrimeTimeSecureServer()
{
try
{
SecureWebServer secureWebServer = new SecureWebServer(7777);
secureWebServer.addHandler("prime_time_handler", new PrimeTimeHandler());
secureWebServer.start();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
PrimeTimeSecureServer primeTimeSecureServer = new PrimeTimeSecureServer();
}
}
Client handler:
import java.util.*;
import org.apache.xmlrpc.*;
public class PrimeTimeHandler implements AuthenticatedXmlRpcHandler
{
public Object execute(String methodName, Vector parameters, String user, String password) throws Exception
{
System.out.println(methodName);
if (methodName.equals("prime_time_handler.getPrimeTime"))
{
return getPrimeTime((String) parameters.elementAt(0));
}
else
{
throw new Exception("No such method!");
}
}
public String getPrimeTime(String password)
{
if(password.equals("give_me_prime_time"))
{
Calendar rightNow = Calendar.getInstance();
return "Prime time is: " + rightNow.getTime().toString();
}
else
{
return "WRONG PASSWORD";
}
}
}
Client:
import org.apache.xmlrpc.secure.*;
import java.util.*;
public class PrimeTimeSecureClient
{
public PrimeTimeSecureClient()
{
try
{
SecureXmlRpcClient secureXmlRpcClient = new SecureXmlRpcClient("https://localhost:7777/");
//secureXmlRpcClient.setBasicAuthentication("frean", "password");
Vector params = new Vector();
params.addElement("give_me_prime_time");
String answer = (String)secureXmlRpcClient.execute("prime_time_handler.getPrimeTime", params);
System.out.println(answer);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
PrimeTimeSecureClient primeTimeSecureClient = new PrimeTimeSecureClient();
}
}
