Estoy tratando de crear una conexión websocket desde el código JavaScript a un servidor Java. Me las arreglé para hacer esto con una conexión ws no segura, pero debido a que el sitio web en el que quiero usar este código es un lado https seguro, tengo que usar un websocket seguro.
He pasado bastante tiempo investigando tratando de hacer que esto funcione, sin embargo, no puedo encontrar la manera de conectarlos. No tengo absolutamente ninguna experiencia con cosas como almacenes de claves o cifrados, pero no necesito esa seguridad, no quiero enviar datos confidenciales.
De todos modos, esto es lo que he intentado:
SLLServerSocket server = (SSLServerSocket) SSLServerSocketFactory .getDefault().createServerSocket(1234); SSLSocket client = (SSLSocket) server.accept();con el código JavaScript correspondiente:
var socket = new WebSocket("wss://localhost:1234") socket.onopen = () => console.log("Connected"); socket.onmessage = m => console.log("Message received:", m); Ejecutar esto resultó en Caused by: javax.net.ssl.SSLHandshakeException: No available authentication scheme que logré solucionar agregando
System.setProperty("jdk.tls.server.protocols", "TLSv1.2"); Ahora obtengo la excepción javax.net.ssl.SSLHandshakeException: no cipher suites in common . También investigué un poco sobre eso, pero todo lo que encuentro parece suponer que ya existe un almacén de claves o algo así, que no es para mí. De hecho no se muy bien que encriptacion debe usar, no encontre nada al respecto
Para ser justos, parte del problema bien puede ser que no sé qué buscar realmente, pero es por eso que pregunto. Ya hay artículos sobre estas excepciones que estoy mostrando, las conozco y no ayudaron.