Hola necesito ayuda con los certificados en java, mas precisamente mi pregunta es como le digo a java que confie en mi certificado (arba.crt) y como leerlo desde el codigo de mi aplicacion?
La solución completa para el hilo: aquí.
Hola necesito ayuda con los certificados en java, mas precisamente mi pregunta es como le digo a java que confie en mi certificado (arba.crt) y como leerlo desde el codigo de mi aplicacion?
La solución completa para el hilo: aquí.
Buscate un programa que se llama KeyTool UI, existen otros pero este es gráfico y te puede ser más fácil.
Luego pasas tú certificado a extensión .jks y ks.
Luego en tú código pones lo siguiente:
Código PHP:java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
System.setProperty("javax.net.ssl.keyStore", "/certificado1.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "clave1");
System.setProperty("javax.net.ssl.trustStore", "/certificado1.ks");
System.setProperty("javax.net.ssl.trustStorePassword", "clave1");
sigo los pasos pero me lanza la excepción "javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated"
Esta es mi clase: yo me tengo que conectar con https://cot.test.arba.gov.ar/Transpo...ntarRemitos.do
class SolicitudHttp {
public void generar(String url, String user, String password, String pathArchivoRemitos, String xmlDestino) throws IOException, KeyStoreException, NoSuchAlgorithmException, CertificateException, KeyManagementException {
//Defino los atributos de la clase
DefaultHttpClient client = new DefaultHttpClient(); //Creo el cliente para la aplicación.
HttpPost post = new HttpPost(url); //Creo el método POST pasandole la url.
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIB LE); //Creo una Entidad multiparte.
File f = new File(pathArchivoRemitos); //Creo el archivo donde se encuentran los remitos.
try {//PETICIÓN (Request)
//Creo las partes y las agrego a la entidad multiparte.
entity.addPart("user", new StringBody(user, "text/plain", Charset.forName("UTF-8")));
entity.addPart("password", new StringBody(password, "text/plain", Charset.forName("UTF-8")));
entity.addPart("file", new FileBody(((File) f), "application/zip"));
//Agrego la entidad al método POST
post.setEntity(entity);
//RESPUESTA (Response)
//Ejecuto el método POST y cargo en una variable String la respuesta.
String response = EntityUtils.toString(client.execute(post).getEntit y(), "UTF-8");
//Creo los objetos necesarios para escribir en un archivo.
File xmlfile = new File(xmlDestino);
BufferedWriter writer = null;
writer = new BufferedWriter(new FileWriter(xmlfile));
//Escribo el código XML en el archivo
writer.write(response);
//Cierro el archivo (Esto es importante!!!)
writer.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
//Cierro la conexión
client.getConnectionManager().shutdown();
}
public static void main(String args[]) throws IOException, KeyStoreException, NoSuchAlgorithmException, CertificateException, KeyManagementException {
System.setProperty("javax.net.ssl.keyStore", "keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword ", "53G35SIST");
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "truststore.jks");
System.setProperty("javax.net.ssl.trustStorePasswo rd", "53G35SIST");
System.setProperty("javax.net.ssl.trustStoreType", "JKS" );
SolicitudHttp solicitudHttp = new SolicitudHttp();
Properties p = new Properties();
try {
p.load(new FileInputStream("configCot.txt"));
solicitudHttp.generar(p.getProperty("url"), p.getProperty("user"), p.getProperty("password"), p.getProperty("pathArchivoRemitos"), p.getProperty("xmlDestino"));
} catch (Exception e) {
System.out.println("El archivo no existe o la ruta o los valores del contenido son incorrectos");
}
}
}
}
}
Bueno esto no lo he probado, pero intenta poniendo este código de primero en el método generar.
Nos cuentas como te fue, saludos.Código PHP:Protocol protocolo = new Protocol( "https", new EasySSLProtocolScoketFactory(), 443);
Protocol.registerProtocol("https",protocolo);
lo probe y sigo con el mismo problema.
Ok, puede ser que no encuentra los archivos de extensión jks, ponle la ruta completa donde los tiene, algo así:
Código PHP:System.setProperty("javax.net.ssl.keyStore", "c:\\carpeta\\keystore.jks");
yo tengo creado el keystore, pero me parece que me falta el truststore, como lo creo?
De la misma forma que creaste el keystore solo que le pones de extensión .ks
segui los pasos de esta pagina http://www.techbrainwave.com/?p=953 y no me anda!
Marcadores