¿Comò publicar mi WSDL de JAVA en Modo Seguro?

Hola que tal , alguien de ustedes me podría como desplegar mi servicio web en modo Seguro , es decir por https

ejemplo:

https://localhost:8080/MiservicioJava/Servicio?wsdl

Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Configuración de servidor

Eso es configuración en el servidor para que pueda atender las solicitudes del https. Depende del server que uses pero a grandes terminos necesitas un keystore con los certificados con que el server cifra los datos.

Si utilizaras tomcat tendrias que tener algo similar a esto en tu archivo "server.xml"

 <Connector
               port="8443"
               protocol="HTTP/1.1"
               SSLEnabled="true"
               maxThreads="150"
               scheme="https"
               secure="true"
               clientAuth="false"
               sslProtocol="TLS"
               keystoreFile="/javadabadoo_keystore"
               keystorePass="password" />

Y con eso puedes accesar a tu WS que mencionas https://localhost:8080/MiservicioJava/Servicio?wsdl. NOTA: No todos los servers se configuran igual,algunos AppServers los tienes que configurar desde su consola administrativa

Imagen de Valerio

Lo que pasa , yo deployo los

Lo que pasa , yo deployo los servicios web en un servidor de aplicaciones llamado Jboss as 7 y quieren que le ponga el https pero ni idea

Imagen de ezamudio

como para qué?

Cuál es la diferencia entre publicar tu WSDL via http o https? Si no hay protección por password o algo así a dicho URL, cualquiera puede ver el WSDL y a todo mundo le devuelve exactamente el mismo texto, no? entonces, para qué molestarse en usar SSL?

El web service como tal obviamente es otra historia y casi siempre es recomendable ponerlo por https, especialmente si la petición involucra algún tipo de autenticación. Pero el puro WSDL no tiene caso ponerlo en https; si lo que quieres es que no sea accesible a cualquier fulano en internet, mejor no lo publiques y se lo envías solamente a quienes lo necesiten, o pones el archivo o archivos estáticos en un web server en un directorio protegido por user/pass (y entonces sí, por https).

Imagen de ezamudio

jboss y https

Te recomiendo que no uses jboss directamente como web server. Ponle el apache httpd en frente, con un certificado X509 para que puedas habilitar SSL y defines proxies para que algunos URL's los despache jboss.

Es cosa de habilitar mod_proxy en httpd (creo que de hecho ya viene habilitado por default) y definir cosas de este tipo:

ProxyPass /app1/ http://localhost:8080/bla/ble/bli/blo

es decir, tu app está en http://localhost:8080/bla/ble/bli/blo (así la publicaste en jboss, y está corriendo en el mismo server que httpd) pero quieres que se vea desde fuera como https://tuservidor.com/app1/

Otra ventaja es que incluso puedes tener el jboss corriendo en otro equipo; en ese caso en vez de localhost le pones la ip o nombre interno de ese equipo en la config del ProxyPass.

Las ventajas de hacer esto son varias. Las principales son: que ya no tienes que poner https en jboss sino en httpd, que puedes tener web server y app server como dos cosas separadas, puedes tener incluso varios app servers (varias instancias de jboss o combinaciones de tomcats, jboss, etc) en varios servers y el web server es el front para todos ellos, y que solamente serán públicas las aplicaciones que quieras hacer públicas; las interfaces de administración del app server por ejemplo no las publicas, las dejas fuera del web server a propósito (y si necesitas usarlas pues por túnel de ssh).

En cuanto a habilitar SSL en el apache httpd hay un montón de tutoriales en la web. Pero necesitas comprar un certificado X509 con el nombre público de tu web server así que ya necesitas tener tu nombre de dominio registrado y que se vea y todo eso. Pero para probar puedes generar un certificado auto-firmado (para eso también hay hartos tutoriales).

Imagen de Valerio

Muchísimas Gracias

Hola que tal ezamudio, respecto a ponerles usuario y contraseña a los web services lo que yo entiendo es hacerles un login y pasword y cuando se logeen que les retorne un ID para que puedan usar los demás metodos

Si es asi, gracias por sus ideas de lo contrario diganme como funciona eso de User & Password

Saludos

WS-Security

Puedes implementar WS-Security. Como lo describe su nombre, ese policy refiere a los temas de seguridad del WS. En una chamba la ocupamos para unos servicios que se publicaron con WAS. Debes de tener mucha precaución en la forma que defines la seguridad ya que se utilizan dos cifrados (transporte y datos). Me acuerdo que cuando generé el cliente del WS no pude hacer el handshake ya que la poliza del servidor no correspondia con la del cliente (Raro caso por cierto) resultó que el WAS hace el cifrado de transporte y datos mientras que el servicio de al que se conectaba solo soportaba el cifrado de transporte( o datos, no recuerdo). En ese caso se tuvo que usar Apache Rampart.
  

Editado:


Encontré esto, espero te funcione.
Por cierto, el WAS tiene documentación para la implementacion de la poliza que te comento. Podrias ver si JBOSS tiene. (10 segundos despues)
Si, si tiene
Imagen de Valerio

Gracias por sus comentarios,

Gracias por sus comentarios, le echare un vistazo lo que me dice,

Saludos