Estoy tratando de seguir el siguiente tutorial (http://chuwiki.chuidiang.org/index.php?title=Lectura_http_y_https_desde_java) para hacer una conexión HTTPS desde java, pero me estoy encontrando con el siguiente error:
java.io.IOException: Authentication failure at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:1623) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:164) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133) at myproject.Prueba_URL.main(Prueba_URL.java:52)
public class Prueba_URL{ public static void main(String[] args) { try { // Carga del fichero que tiene los certificados de los servidores en // los que confiamos. InputStream fileCertificadosConfianza = new FileInputStream(new File("c:/unpath/.keystore")); KeyStore ksCertificadosConfianza = KeyStore.getInstance(KeyStore.getDefaultType()); ksCertificadosConfianza.load(fileCertificadosConfianza,"87654321".toCharArray()); fileCertificadosConfianza.close();
// Ponemos el contenido en nuestro manager de certificados de // confianza. TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(ksCertificadosConfianza);
// Creamos un contexto SSL con nuestro manager de certificados en los // que confiamos. SSLContext context = SSLContext.getInstance("TLS"); context.init(null, tmf.getTrustManagers(), null); SSLSocketFactory sslSocketFactory = context.getSocketFactory();
// Abrimos la conexión y le pasamos nuestro contexto SSL URL url = new URL("https://www.bet365.es/home/FlashGen4/WebConsoleApp.asp?rn=30454870898&stf=1"); URLConnection conexion = url.openConnection(); ((HttpsURLConnection) conexion).setSSLSocketFactory(sslSocketFactory);
// Ya podemos conectar y leer conexion.connect(); InputStream is = conexion.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); char[] buffer = new char[1000]; int leido; while ((leido = br.read(buffer)) > 0) { System.out.println(new String(buffer, 0, leido)); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (KeyStoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CertificateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (KeyManagementException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Estoy tratando de seguir el siguiente tutorial (http://chuwiki.chuidiang.org/index.php?title=Lectura_http_y_https_desde_java) para hacer una conexión HTTPS desde java, pero me estoy encontrando con el siguiente error:
java.io.IOException: Authentication failure at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:1623)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:164)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
at myproject.Prueba_URL.main(Prueba_URL.java:52)
mi codigo en Jdeveloper es :
package myproject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
public class Prueba_URL{
public static void main(String[] args) {
try {
// Carga del fichero que tiene los certificados de los servidores en
// los que confiamos.
InputStream fileCertificadosConfianza = new FileInputStream(new File("c:/unpath/.keystore"));
KeyStore ksCertificadosConfianza = KeyStore.getInstance(KeyStore.getDefaultType());
ksCertificadosConfianza.load(fileCertificadosConfianza,"87654321".toCharArray());
fileCertificadosConfianza.close();
// Ponemos el contenido en nuestro manager de certificados de
// confianza.
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ksCertificadosConfianza);
// Creamos un contexto SSL con nuestro manager de certificados en los
// que confiamos.
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
SSLSocketFactory sslSocketFactory = context.getSocketFactory();
// Abrimos la conexión y le pasamos nuestro contexto SSL
URL url = new URL("https://www.bet365.es/home/FlashGen4/WebConsoleApp.asp?rn=30454870898&stf=1");
URLConnection conexion = url.openConnection();
((HttpsURLConnection) conexion).setSSLSocketFactory(sslSocketFactory);
// Ya podemos conectar y leer
conexion.connect();
InputStream is = conexion.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
char[] buffer = new char[1000];
int leido;
while ((leido = br.read(buffer)) > 0) {
System.out.println(new String(buffer, 0, leido));
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Muchas Gracias !!!