Al lavoro, mi è stato chiesto di esaminare la creazione di una topologia di riferimento per un'applicazione di chat WebSocket, che include un proxy tra il server front-end e il back-end. Al momento, sto ancora eseguendo il frontend e il backend sullo stesso server per lo sviluppo, ma ho temporaneamente impostato i WebSockets affinché facciano riferimento al proxy, che si trova su un server completamente separato in laboratorio. Entrambi i server si trovano su una rete interna e ciascuno ha un certificato autofirmato separato.
Quando stavo testando il WebSocket su TLS, non è riuscito a causa dell'autocertificazione del certificato (senza mostrare alcun dialogo per fare un'eccezione) finché non mi sono collegato direttamente al proxy e ho fatto un'eccezione per il certificato. Dopo di ciò, ha funzionato perfettamente, ma in pratica il visitatore probabilmente non sarebbe stato autorizzato a farlo. Quindi, ho bisogno di scoprire come certificare entrambi allo stesso tempo.
Per quanto ne so, i modi principali per farlo sono:
- Inserisci il proxy e il frontend su diversi sottodomini (ad es. frontend.domain.com e proxy.domain.com ) e utilizza un certificato jolly per il sito. In laboratorio sarebbe più semplice e veloce lavorare in laboratorio, ma l'IETF scoraggia questo .
- Utilizzare un singolo certificato con i nomi alternativi oggetto e includere frontend.mydomain.com e proxy.mydomain.com nel campo SAN per www. mydomain.com . Per quanto posso dire, questo condivide il problema di garantire i domini canaglia / buggy.
- Utilizza certs completamente separati per i due server, come sto già facendo. È più complicato lavorare con, specialmente con i certificati autofirmati, ma se un dominio è compromesso, questo è solo un punto di errore. La mia domanda principale qui è che se il proxy e i certificati di frontend non fossero autofirmati, sarebbe più probabile che funzionasse?
C'è qualcosa che mi è mancato con quanto sopra, o ci sono altri metodi?
EDIT 22/07/2015: Per inciso, mentre inviavo una XMLHttpRequest tramite lo stesso meccanismo, ho scoperto che dovevo disattivare la verifica della cert tra il proxy e il back-end per consentire all'handshake SSL di andare avanti, quindi Mi chiedo se i miei certificati autofirmati fossero la vera causa del problema. Tuttavia, probabilmente questo non risolve il mio problema sopra.