You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@ws.apache.org by Starsscream Desepticon <ka...@yahoo.co.uk> on 2005/09/26 13:09:40 UTC
Still getting unknown certificate Exception
Hi
I'm still getting:
javax.net.ssl.SSLHandshakeException: Received fatal
alert:
certificate_unknown
javax.net.ssl.SSLHandshakeException: Received fatal
alert:
certificate_unknown
This workaround is not working, it still doesn't
accept my selfsigned
certificates. Does anyone know what the problem is?
Complete code is
below.
Thank you
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
public class MyHostnameVerifier implements
HostnameVerifier {
public boolean verify(String urlHostName,
SSLSession session) {
if
(urlHostName.equals(session.getPeerHost())) {
return true;
} else {
System.out.println(urlHostName
+ " and " + session.getPeerHost());
return false;
}
}
} // end of class
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
public class MyTrustManager implements
X509TrustManager {
public void checkClientTrusted(X509Certificate[]
chain, String
authType) {
}
public void checkServerTrusted(X509Certificate[]
chain, String
authType) {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
} // end of class
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.X509TrustManager;
import org.apache.xmlrpc.AuthenticatedXmlRpcHandler;
import org.apache.xmlrpc.secure.SecureWebServer;
import org.apache.xmlrpc.secure.SecurityTool;
public class SecureServer {
private SecureWebServer secureWebServer;
private class TestHandler implements
AuthenticatedXmlRpcHandler {
public Object execute(String method,
Vector param, String user,
String pwd) {
System.out.println(method);
if (method.equals("test")) {
return "hello world";
}
}
}
public SecureServer() {
try {
SecurityTool.setKeyStore("KEYSTORE");
SecurityTool.setKeyStorePassword(PWD);
SSLContext sslctx =
SSLContext.getInstance("SSL");
sslctx.init(null, new
X509TrustManager[] { new MyTrustManager() },
null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslctx.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new
MyHostnameVerifier());
secureWebServer = new
SecureWebServer(2000);
secureWebServer.addHandler("testhandler", new
TestHandler());
secureWebServer.start();
} catch (Exception e) {
e.printStackTrace();
}
} // end of class
import java.util.Vector;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.X509TrustManager;
import org.apache.xmlrpc.secure.SecureXmlRpcClient;
import org.apache.xmlrpc.secure.SecurityTool;
public class SecureClient {
public SecureClient() {
try {
SecurityTool.setKeyStore("KEYSTORE");
SecurityTool.setKeyStorePassword(PWD);
SecurityTool.setup();
SSLContext sslctx =
SSLContext.getInstance("SSL");
sslctx.init(null, new
X509TrustManager[] { new MyTrustManager() },
null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslctx.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new
MyHostnameVerifier());
SecureXmlRpcClient
secureXmlRpcClient = new SecureXmlRpcClient(
"https://localhost:2000/");
String answer = (String)
secureXmlRpcClient.execute(
"testhandler.test", new Vector());
System.out.println(answer);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SecureClient secureClient = new
SecureClient();
}
} // end of class
___________________________________________________________
To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre. http://uk.security.yahoo.com