En el trabajo, me pidieron que estudie la creación de una topología de referencia para una aplicación de chat WebSocket, que incluye un proxy entre el servidor de frontend y el backend. En este momento, todavía estoy ejecutando el frontend y el backend en el mismo servidor para el desarrollo, pero temporalmente he configurado los WebSockets para que apunten al proxy, que se encuentra en un servidor completamente independiente en el laboratorio. Ambos servidores están en una red interna, y cada uno tiene un certificado separado y autofirmado.
Cuando estaba probando el WebSocket sobre TLS, falló debido a que el certificado estaba autofirmado (sin mostrar ningún diálogo para hacer una excepción) hasta que me conecté directamente al proxy e hice una excepción para el certificado. Después de eso, funcionó perfectamente bien, pero en la práctica, al visitante probablemente no se le permitiría hacer eso. Por lo tanto, tengo que averiguar cómo certificar ambos al mismo tiempo.
Por lo que puedo decir, las principales formas de hacerlo son:
- Coloque el proxy y la interfaz en diferentes subdominios (por ejemplo, frontend.domain.com y proxy.domain.com ), y use un certificado comodín para el sitio. Esto sería más rápido y más fácil de trabajar en el laboratorio, pero el IETF lo desalienta .
- Use un único certificado con nombres alternativos de sujeto, e incluya tanto frontend.mydomain.com como proxy.mydomain.com debajo del campo SAN para www. mydomain.com . Por lo que puedo decir, esto comparte el problema de garantizar los dominios rogue / buggy.
- Use certificados completamente separados para los dos servidores, como ya estoy haciendo. Es más complicado trabajar con ellos, especialmente con certificados autofirmados, pero si un dominio está comprometido, eso es solo un punto de falla. Mi pregunta principal aquí es que si los certificados de proxy y frontend no fueran autofirmados, ¿sería más probable que esto funcione?
¿Hay algo que haya pasado por alto con lo anterior, o hay otros métodos?
EDITAR 22/07/2015: Aparte de eso, al enviar un XMLHttpRequest a través del mismo mecanismo, descubrí que tenía que desactivar la verificación del certificado entre el proxy y el backend para permitir que el protocolo SSL siguiera adelante, por lo que Me pregunto si mis certificados autofirmados fueron la verdadera causa del problema. Sin embargo, eso probablemente no resuelve mi problema anterior.