Recent Posts

Pages: [1] 2 3 ... 10
1
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by chuidiang on Abril 26, 2017, 02:16:28 am »
Hola:

Eso que has puesto "WEB-INF/resources/keystore.jks" es un path relativo al directorio donde se esté ejecutando tu aplicación java (no tu apliación web), que si está corriendo en un jboss, será posiblemente el directorio bin de jboss o similar.

Tienes que obtener el path completo de tu WEB-INF, con algo de código similar a este

Code: [Select]
ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/resources/keystore.jks");

Tendrás que ver cómo obtener el context de tu aplicación web si no estás en un Servlet....

Saludos.
2
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by romel on Abril 25, 2017, 09:59:18 pm »
Hola,

He tenido problemas al intentar leer el JKS  cuando le asigno las propiedades.
System.setProperty("javax.net.ssl.keyStore", "WEB-INF/resources/keystore.jks");
      System.setProperty("javax.net.ssl.keyStorePassword","prueba123");
      System.setProperty("javax.net.ssl.trustStore", "WEB-INF/resources/keystore.jks");
      System.setProperty("javax.net.ssl.trustStorePassword", "prueba123");

Cuando genero el war con el build.xml que tengo configurado para compilar mi proyecto, le indico que se guarde en la ruta "WEB-INF/resources/keystore.jks", pero cuando ejecuto el método me envíe el error de que no encuentra la ruta.

Podría indicarme cómo tendría que leer ese archivo alojado en mi war.

Saludos,
3
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by romel on Abril 21, 2017, 04:07:39 am »
Gracias,

Ya tengo suficiente información. Ahora tengo que procesarla. Espero volver al foro con la solución.

Saludos cordiales,
4
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by chuidiang on Abril 21, 2017, 03:44:01 am »
Hola:

Echa un ojo aquí a la parte de los certificados http://chuwiki.chuidiang.org/index.php?title=Socket_SSL_con_Java

Es tu mismo problema, solo que ahí se usa para un socket SSL (en vez de un webservice https). Lo de los certificados se hace igual, hay que meter el de cliente en un sitio, el del servidor en otro ... y poner las variables que mencionabas.

Saludos.
5
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by romel on Abril 21, 2017, 02:55:16 am »
Hola,


Sí, el cliente que estoy desarrollando corre en un jboss. La parte del jboss según lo que investigué no es posible tener dos certificados (ya hay un certificado configurado en el servidor donde se alojará mi webservice) en el mismo jboss, y la solución es utilizar las propiedades que le mencioné.

"en qué parte ya podría invocar el servicio del cliente https" me refiero a que luego de implementar el código de ejemplo que me pasó o las propiedades que le mencioné, tengo que invocar los métodos del web service con las clases que me generó el eclipse a partir del wsdl del web service https(el qeu voy a consumir).

"el servicio del cliente" me refería al webservice en https.

Espero haberme explicado mejor.

Podría aclararme la parte de exportar los certificados del jks.  O indicarme un ejemplo.

Saludos,

6
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by chuidiang on Abril 21, 2017, 12:47:28 am »
Hola:

Sí, posiblemente el certificado CER es el del cliente (en el ejemplo que te pasé es el pk12) y el keystore tendría el certificado del servidor al que te vas a conectar.

En jboss no sé cómo se configura, posiblemente tenga sus propios sitios donde poner esos certificados ... https://docs.jboss.org/jbossweb/3.0.x/ssl-howto.html . De todas formas, lo del jboss me despista.... ¿El cliente que estás desarrollando corre en un jboss? ¿O en el jboss está el web service al que quieres llamar?

No entiendo lo de "en qué parte ya podría invocar el servicio del cliente https". Hay un servidor con un web service https y hay un cliente que quiere llamar a ese web service presentándole su certificado de cliente. No sé qué es "el servicio del cliente".

Las variables de entorno que mencionas también son válidas en general, no necesitarías el código que te he pasado (no sé si jboss les hace caso en el caso de que tu cliente corra en un jboss). En keyStore debes decir el almacén que contiene tu certificado de cliente (el .cer que te han pasado). En trustStore debes poner el almacén donde está el certificado del servidor (el keystore que te han pasado).

Saludos.
7
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by romel on Abril 20, 2017, 11:34:54 pm »
Hola,

En mi caso sería el segundo que menciona: Consumir un web service que está con https y que a su vez requiere que el cliente le presente un certificado de cliente para identificarse. Creo que por eso que me dieron el certificado del cliente.

Ahora de hacerlo de la manera fácil como dice, tendría que agregar esos cerficados en el cacerts del jre que utiliza el servidor de aplicaciones, en mi caso Jboss 7.1?

En el otro caso complicado en el ejemplo que menciona me serviría para acceder al servicio, pero en qué parte ya podría invocar el servicio del cliente https?

En muchos casos de ejemplo mencionan estas propiedades:
javax.net.ssl.keyStore
javax.net.ssl.keyStoreType
javax.net.ssl.keyStorePassword
javax.net.ssl.trueStore
javax.net.ssl.trueStorePassword

Gracias.

Saludos cordiales,
8
Java J2SE / Re: Consumir Web Service Java con HTTPS desde Java
« Last post by chuidiang on Abril 20, 2017, 12:32:25 pm »
Hola:

Hay dos casos posibles, no sé cual es el tuyo

- Consumir un web service que está con https
- Consumir un web service que está con https y que a su vez requiere que el cliente le presente un certificado de cliente para identificarse.

En ambos casos, al ser https, necesitas que tu cliente acepte (confíe) en el certificado del servidor. Para que tu cliente acepte el certificado del servidor, tienes dos posibilidades de hacerlo.

Una es la fácil y que es la que mencionas que has encontrado, meter el certificado del servidor en el almacén de certificados de java. Con el ejecutable keytool que viene con java puedes extraer los certificados del almacén que te han pasado y luego añadirlos al del jre.

La difícil es hacerlo con código java, indicando desde código cuales son los almacenes y certificados que debe usar. Ahí te costará más encontrar ejemplos, ya que el código no es precisamente sencillo.

En Cliente de Web Service CXF con certificado de cliente sobre https tienes el caso más complejo : web service que requiere certificado de cliente y usando un almacén de claves propio.

Si tu caso no hay certificado de cliente, habría que quitar del código anterior todo lo relativo al certificado de cliente. Es decir debes dejar sólo lo que menciones keystore2 y trustore2. Pero lo dicho, para este caso lo más sencillo sería extraer con keytool del almacén que te han pasado el certificado del servidor y con keytool meterlo en el almacén del jre, así no tendrías que hacer nada en código.

Saludos.
9
Java J2SE / Consumir Web Service Java con HTTPS desde Java
« Last post by romel on Abril 20, 2017, 07:36:55 am »
Hola Estimados,

Estoy desarrollando un webservice en java para consumir otro cliente webservice que está con https. Utilizo el ide de eclipse.
Importé el cliente webservice y se me gereraró el paquete con las clases. Ahora no sé cómo utilizar el keystore (JKS) y el certificado (CER) que me suministraron, también me dieron los password público y privado del jks y el username y el password del certificado.
He trabajado consumiendo clientes web service sin https y es la primera vez que tengo que hacerlo con uno que tiene https. He leído muchos ejemplos pero no son completos o se enfocan en otro tipo de certificados.

En muchos ejemplos indican que se debe agregar el certificado que tengo al almacén de claves genérico del jre, pero ya tengo un almacén de claves que contiene los dos certificados que se necesitan para firmar las peticiones de entrada y salida.

Por favor, si alguien lo ha hecho me dé una idea de qué necesito para poder firmar las peticiones y desencriptar las respuestas de los llamados al webservice.

Muchas gracias.

Saludos cordiales,
10
Groovy / Algo de sintaxis sobre los Map de Groovy
« Last post by chuidiang on Abril 18, 2017, 08:00:14 pm »
En groovy podemos definir un Map asi

Code: [Select]
def map = ['a':1, 'b':2]
si la clave es un String normal (sin caracteres especiales), podemos no poner las comillas

Code: [Select]
def map = [a:1, b:2]
Si tenemos una variable con un String y usamos esa variable entre paréntesis como clave, es el contenido de la variable (el String) el que será la clave

Code: [Select]
def variable = 'a'
def map = [(variable):1, b:2]   // Esto contendrá [a:1, b:2]

Podemos acceder poniendo la clave entre corchetes o incluso usando la notación de punto

Code: [Select]
println map['a']   // Aqui si es necesario las comillas
println map.a

Hay un método get() que permite indicar una clave y un valor por defecto. Si la clave no existe en el Map, se añade el valor por defecto al Map y se devuelve el mismo.

Code: [Select]
def map = [a:1, b:2]
println map.get('c',3)   // Devuelve 3 y añade c:3 al Map

Saludos.
Pages: [1] 2 3 ... 10
ey