This discussion is archived
3 Replies Latest reply: Oct 12, 2011 2:29 AM by rukbat RSS

Open https connection in Java

875275 Newbie
Currently Being Moderated
I am working in JDeveloper 10.1.3.

I need to connect to https site. The remote site provides us URL and password protected client certification. I am able to connect this site JSP in the browser by presenting the client certificate. The remote https site validates the URL and send us data in XML format. I need to parse this on - fly xml and get Login URL to redirect user to the specified URL.

so I tried to use httpsURLOpenconnection, but I always failes. Please give me some

I tried openConnection in Java, but since the URL is HTTPS with client certifcation, it fails. I got " No trusted certificate found"

any idea? Please help. It is closing to the deadline.

These are my classes

public class SSO implements Serializable {

private String entityNumber; // mid

final String PORTAL_URL = "https:/";
public SSO() {

public void invokeRedirect() {
//get the context object
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext extContext = context.getExternalContext();
Class factoryClass = null;
// URLStreamHandlerFactory factory = null;
String socksServer = "";
String socksPort = "";


StringBuffer urlLink = new StringBuffer(PORTAL_URL);

URL url=new URL(urlLink.toString()); https = ( url.openConnection();

https.setSSLSocketFactory(getFactory(new File("C:\\java_home\\jre\\lib\\security\\mycert.jks"), "mypassword"));


catch(Exception ex){


private SSLSocketFactory getFactory(File pKeyFile, String pKeyPassword ) throws Exception
KeyManagerFactory kmf= KeyManagerFactory.getInstance("SUNX509");
TrustManagerFactory tmf= TrustManagerFactory.getInstance("SUNX509");
KeyStore ksKeys = KeyStore.getInstance("JKS");
KeyStore ksTrust = KeyStore.getInstance("JKS");

InputStream keyInput = new FileInputStream(pKeyFile);
ksKeys.load(keyInput, pKeyPassword.toCharArray());

String trustPass = "mypassword2";
ksTrust.load(new FileInputStream("C:\\java_home\\jre\\lib\\security\\cacerts"),trustPass.toCharArray());

kmf.init(ksKeys, pKeyPassword.toCharArray());

SSLContext context = SSLContext.getInstance("TLS");
context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());

return context.getSocketFactory();



  • Correct Answers - 10 points
  • Helpful Answers - 5 points