[pve-devel] idea for implementation of a spice http connect proxy, with pve authentification
Alexandre DERUMIER
aderumier at odiso.com
Tue Jun 18 08:13:21 CEST 2013
Hi,
I have try to reproduce the bi-directionnel tunnel like run_vnc_proxy(), but it doesn't work :(
But the good news, is that I have succefully made a nodejs proxy, reimplementing verify_vnc_method (with rsa verify,ticket age verification,...).
it's working like this:
- call PVE::Qemu::spiceproxy api
-generate a socat tunnel (randomunixsocket -> qemu spice socket)
-return a spice_assemble_ticket
ticket
-------
[virt-viewer]
type=spice
proxy=proxy:3128
host=base32(vnc_assemble_ticket) #base32 needed because spice client lowercase the string
port=randomunixsocket
client----->proxy:3128---->randomunixsocket--->socat (ssh for remote)--->qemu spice.socket.
So only 1 port is needed outside, and we have the socat for more security.
Things to do:
- add support for spice tls for unix socket. (need to hack spicelib server side)
- find a way to add a connect timeout to socat. (If the client don't connect, the socat tunnel is running indefinitely)
- implemented the proxy in perl. (But maybe you are better than me for this ;)
I'll try to send patches for the end of the week.
Alexandre
----- Mail original -----
De: "Dietmar Maurer" <dietmar at proxmox.com>
À: "Alexandre DERUMIER" <aderumier at odiso.com>
Cc: pve-devel at pve.proxmox.com
Envoyé: Lundi 17 Juin 2013 10:37:33
Objet: RE: [pve-devel] idea for implementation of a spice http connect proxy, with pve authentification
> Yes, I would like to reuse pveproxy. (I just have tested HTTP::PROXY to see
> how it's work)
>
> The only thing is that spice client only do proxy through http and not https.
> But it should be possible to add a new listen port to pveproxy on http, only
> accepting CONNECT request.
> Should not be a security problem if we crypt the host header, and the
> connection to spice use tls.
Maybe it is better to use an dynamic port and run a separate server (like we do for VNC)?
> I think the main problem in HTTP::PROXY, it that the tunnel is not bi-
> directionnal. I have debug it, it's waiting for read spice socket.
>
> The implementation is pretty simple:
>
> CLIENT ---> HTTP CONNECT host:port
> SERVER ----> HTTP/1.0 200 OK
> then bi-directionnal tunnel read-write
>
>
> But I don't known how to implement the bi-directionnal tunnel in perl.
see run_vnc_proxy() in 'qm'
More information about the pve-devel
mailing list