Activity log for bug #1503193

Date Who What changed Old value New value Message
2015-10-06 09:10:18 Dmitry Sutyagin bug added bug
2015-10-06 09:28:58 Dmitry Sutyagin bug watch added https://bugzilla.redhat.com/show_bug.cgi?id=1204482
2015-10-06 09:54:43 Dmitry Sutyagin description Fuel 6.0 Customer tried to enable SSL termination on haproxy for all services, haproxy only listens to port 443. Changed novncproxy_base_url: from "http://.../vnc_auto.html" to "https://.../vnc_auto.html?port=443" (https - needed for initial connection, ?port=443 needed to tell javascript to use port 443 for wss, otherwise it will connect to port 80) Result: /var/log/nova/consoleauth.log: 2015-10-05T21:23:42.572675+00:00 warning: Checking Token: 8f9a0e2f-0b0c-4e77-b816-bb618de5e2e8/websockify, False /var/log/nova/nova-novncproxy.log: 2015-10-05T21:23:42.577323+00:00 info: handler exception: Invalid Token 2015-10-05T21:23:42.579856+00:00 debug: exception 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Traceback (most recent call last): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 874, in top_new_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy client = self.do_handshake(startsock, address) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 809, in do_handshake 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.RequestHandlerClass(retsock, address, self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 150, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy websockify.ProxyRequestHandler.__init__(self, *args, **kwargs) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 112, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.__init__(self, req, addr, server) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 540, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.handle(self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle_one_request() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy method() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 506, in do_GET 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy if not self.handle_websocket(): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 494, in handle_websocket 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.new_websocket_client() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 91, in new_websocket_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy raise Exception(_("Invalid Token")) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Exception: Invalid Token 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy The issue happens In /usr/lib/python2.6/site-packages/nova/console/websocketproxy.py: token = urlparse.parse_qs(query).get("token", [""]).pop() Will return <TOKEN>/websockify, so token will be concatenated with /websockify text, and cannot be validated. The workaround I used to fix was to add an extra line: token = token.split('/')[0] After this change noVNC starts working well over https. Also found a related bug - https://bugs.launchpad.net/mos/+bug/1460070 Fuel 6.0 Customer tried to enable SSL termination on haproxy for all services, haproxy is configured to only listen on 443 (and redirect all 80 to 443). Changed novncproxy_base_url: from "http://.../vnc_auto.html" to "https://.../vnc_auto.html?port=443" (https - needed for initial connection, ?port=443 needed to tell javascript to use port 443 for wss, otherwise it will connect to port 80) Result: /var/log/nova/consoleauth.log: 2015-10-05T21:23:42.572675+00:00 warning: Checking Token: 8f9a0e2f-0b0c-4e77-b816-bb618de5e2e8/websockify, False /var/log/nova/nova-novncproxy.log: 2015-10-05T21:23:42.577323+00:00 info: handler exception: Invalid Token 2015-10-05T21:23:42.579856+00:00 debug: exception 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Traceback (most recent call last): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 874, in top_new_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy client = self.do_handshake(startsock, address) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 809, in do_handshake 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.RequestHandlerClass(retsock, address, self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 150, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy websockify.ProxyRequestHandler.__init__(self, *args, **kwargs) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 112, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.__init__(self, req, addr, server) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 540, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.handle(self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle_one_request() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy method() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 506, in do_GET 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy if not self.handle_websocket(): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 494, in handle_websocket 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.new_websocket_client() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 91, in new_websocket_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy raise Exception(_("Invalid Token")) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Exception: Invalid Token 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy The issue happens In /usr/lib/python2.6/site-packages/nova/console/websocketproxy.py: token = urlparse.parse_qs(query).get("token", [""]).pop() Will return <TOKEN>/websockify, so token will be concatenated with /websockify text, and cannot be validated. The workaround I used to fix was to add an extra line: token = token.split('/')[0] After this change noVNC starts working well over https. Also found a related bug - https://bugs.launchpad.net/mos/+bug/1460070
2015-10-06 09:55:12 Dmitry Sutyagin description Fuel 6.0 Customer tried to enable SSL termination on haproxy for all services, haproxy is configured to only listen on 443 (and redirect all 80 to 443). Changed novncproxy_base_url: from "http://.../vnc_auto.html" to "https://.../vnc_auto.html?port=443" (https - needed for initial connection, ?port=443 needed to tell javascript to use port 443 for wss, otherwise it will connect to port 80) Result: /var/log/nova/consoleauth.log: 2015-10-05T21:23:42.572675+00:00 warning: Checking Token: 8f9a0e2f-0b0c-4e77-b816-bb618de5e2e8/websockify, False /var/log/nova/nova-novncproxy.log: 2015-10-05T21:23:42.577323+00:00 info: handler exception: Invalid Token 2015-10-05T21:23:42.579856+00:00 debug: exception 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Traceback (most recent call last): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 874, in top_new_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy client = self.do_handshake(startsock, address) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 809, in do_handshake 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.RequestHandlerClass(retsock, address, self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 150, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy websockify.ProxyRequestHandler.__init__(self, *args, **kwargs) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 112, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.__init__(self, req, addr, server) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 540, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.handle(self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle_one_request() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy method() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 506, in do_GET 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy if not self.handle_websocket(): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 494, in handle_websocket 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.new_websocket_client() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 91, in new_websocket_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy raise Exception(_("Invalid Token")) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Exception: Invalid Token 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy The issue happens In /usr/lib/python2.6/site-packages/nova/console/websocketproxy.py: token = urlparse.parse_qs(query).get("token", [""]).pop() Will return <TOKEN>/websockify, so token will be concatenated with /websockify text, and cannot be validated. The workaround I used to fix was to add an extra line: token = token.split('/')[0] After this change noVNC starts working well over https. Also found a related bug - https://bugs.launchpad.net/mos/+bug/1460070 Fuel 6.0 Customer tried to enable SSL termination on haproxy for all services, haproxy is configured to listen on 443 and redirect all 80 to 443. Changed novncproxy_base_url: from "http://.../vnc_auto.html" to "https://.../vnc_auto.html?port=443" (https - needed for initial connection, ?port=443 needed to tell javascript to use port 443 for wss, otherwise it will connect to port 80) Result: /var/log/nova/consoleauth.log: 2015-10-05T21:23:42.572675+00:00 warning: Checking Token: 8f9a0e2f-0b0c-4e77-b816-bb618de5e2e8/websockify, False /var/log/nova/nova-novncproxy.log: 2015-10-05T21:23:42.577323+00:00 info: handler exception: Invalid Token 2015-10-05T21:23:42.579856+00:00 debug: exception 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Traceback (most recent call last): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 874, in top_new_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy client = self.do_handshake(startsock, address) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 809, in do_handshake 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.RequestHandlerClass(retsock, address, self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 150, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy websockify.ProxyRequestHandler.__init__(self, *args, **kwargs) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 112, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.__init__(self, req, addr, server) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 540, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.handle(self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle_one_request() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy method() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 506, in do_GET 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy if not self.handle_websocket(): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 494, in handle_websocket 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.new_websocket_client() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 91, in new_websocket_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy raise Exception(_("Invalid Token")) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Exception: Invalid Token 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy The issue happens In /usr/lib/python2.6/site-packages/nova/console/websocketproxy.py: token = urlparse.parse_qs(query).get("token", [""]).pop() Will return <TOKEN>/websockify, so token will be concatenated with /websockify text, and cannot be validated. The workaround I used to fix was to add an extra line: token = token.split('/')[0] After this change noVNC starts working well over https. Also found a related bug - https://bugs.launchpad.net/mos/+bug/1460070
2015-10-06 09:57:47 Dmitry Sutyagin description Fuel 6.0 Customer tried to enable SSL termination on haproxy for all services, haproxy is configured to listen on 443 and redirect all 80 to 443. Changed novncproxy_base_url: from "http://.../vnc_auto.html" to "https://.../vnc_auto.html?port=443" (https - needed for initial connection, ?port=443 needed to tell javascript to use port 443 for wss, otherwise it will connect to port 80) Result: /var/log/nova/consoleauth.log: 2015-10-05T21:23:42.572675+00:00 warning: Checking Token: 8f9a0e2f-0b0c-4e77-b816-bb618de5e2e8/websockify, False /var/log/nova/nova-novncproxy.log: 2015-10-05T21:23:42.577323+00:00 info: handler exception: Invalid Token 2015-10-05T21:23:42.579856+00:00 debug: exception 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Traceback (most recent call last): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 874, in top_new_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy client = self.do_handshake(startsock, address) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 809, in do_handshake 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.RequestHandlerClass(retsock, address, self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 150, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy websockify.ProxyRequestHandler.__init__(self, *args, **kwargs) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 112, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.__init__(self, req, addr, server) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 540, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.handle(self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle_one_request() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy method() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 506, in do_GET 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy if not self.handle_websocket(): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 494, in handle_websocket 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.new_websocket_client() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 91, in new_websocket_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy raise Exception(_("Invalid Token")) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Exception: Invalid Token 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy The issue happens In /usr/lib/python2.6/site-packages/nova/console/websocketproxy.py: token = urlparse.parse_qs(query).get("token", [""]).pop() Will return <TOKEN>/websockify, so token will be concatenated with /websockify text, and cannot be validated. The workaround I used to fix was to add an extra line: token = token.split('/')[0] After this change noVNC starts working well over https. Also found a related bug - https://bugs.launchpad.net/mos/+bug/1460070 Fuel 6.0 Customer tried to enable SSL termination on haproxy for all services, haproxy is configured to listen on 443 and redirect all 80 to 443, ACLs are used to redirect traffic to proper backends. Every backend except novncproxy works properly. novncproxy_base_url is modified on computes to use https: from "http://.../vnc_auto.html" to "https://.../vnc_auto.html?port=443" (https - needed for initial connection, ?port=443 needed to tell javascript to use port 443 for wss, otherwise it will connect to port 80) Result: /var/log/nova/consoleauth.log: 2015-10-05T21:23:42.572675+00:00 warning: Checking Token: 8f9a0e2f-0b0c-4e77-b816-bb618de5e2e8/websockify, False /var/log/nova/nova-novncproxy.log: 2015-10-05T21:23:42.577323+00:00 info: handler exception: Invalid Token 2015-10-05T21:23:42.579856+00:00 debug: exception 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Traceback (most recent call last): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 874, in top_new_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy client = self.do_handshake(startsock, address) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 809, in do_handshake 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.RequestHandlerClass(retsock, address, self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 150, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy websockify.ProxyRequestHandler.__init__(self, *args, **kwargs) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 112, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.__init__(self, req, addr, server) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__ 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 540, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy SimpleHTTPRequestHandler.handle(self) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.handle_one_request() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy method() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 506, in do_GET 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy if not self.handle_websocket(): 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 494, in handle_websocket 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy self.new_websocket_client() 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 91, in new_websocket_client 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy raise Exception(_("Invalid Token")) 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy Exception: Invalid Token 2015-10-05 23:23:42.578 108841 TRACE nova.console.websocketproxy The issue happens In /usr/lib/python2.6/site-packages/nova/console/websocketproxy.py: token = urlparse.parse_qs(query).get("token", [""]).pop() Will return <TOKEN>/websockify, so token will be concatenated with /websockify text, and cannot be validated. The workaround I used to fix was to add an extra line: token = token.split('/')[0] After this change noVNC starts working well over https. Also found a related bug - https://bugs.launchpad.net/mos/+bug/1460070
2015-10-06 10:17:14 Roman Podoliaka mos: milestone 6.0-updates
2015-10-06 10:17:26 Roman Podoliaka mos: assignee MOS Nova (mos-nova)
2015-10-06 10:17:27 Roman Podoliaka mos: importance Undecided Medium
2015-10-06 10:17:31 Roman Podoliaka mos: status New Confirmed
2015-10-23 20:41:12 Roman Rufanov nominated for series mos/6.1.x
2015-10-23 20:41:12 Roman Rufanov bug task added mos/6.1.x
2015-10-23 20:41:12 Roman Rufanov nominated for series mos/7.0.x
2015-10-23 20:41:12 Roman Rufanov bug task added mos/7.0.x
2015-10-23 20:41:12 Roman Rufanov nominated for series mos/8.0.x
2015-10-23 20:41:12 Roman Rufanov bug task added mos/8.0.x
2015-10-23 20:41:26 Roman Rufanov nominated for series mos/6.0.x
2015-10-23 20:41:26 Roman Rufanov bug task added mos/6.0.x
2015-10-23 20:41:34 Roman Rufanov mos/6.0.x: status New Confirmed
2015-10-23 20:41:36 Roman Rufanov mos/6.0.x: importance Undecided High
2015-10-23 20:41:45 Roman Rufanov mos/6.0.x: assignee MOS Maintenance (mos-maintenance)
2015-10-23 20:41:53 Roman Rufanov mos/6.1.x: assignee MOS Maintenance (mos-maintenance)
2015-10-23 20:42:00 Roman Rufanov mos/7.0.x: assignee MOS Maintenance (mos-maintenance)
2015-10-23 20:42:08 Roman Rufanov mos/6.0.x: milestone 6.0-updates
2015-10-23 20:42:13 Roman Rufanov mos/6.1.x: milestone 6.1-updates
2015-10-23 20:42:21 Roman Rufanov mos/7.0.x: milestone 7.0-updates
2015-10-25 09:28:49 Vitaly Sedelnik mos/6.0.x: milestone 6.0-updates 6.0-mu-7
2015-10-30 10:36:49 Vitaly Sedelnik mos/6.1.x: status New Confirmed
2015-10-30 10:36:51 Vitaly Sedelnik mos/7.0.x: status New Confirmed
2015-10-30 10:36:54 Vitaly Sedelnik mos/6.1.x: importance Undecided Medium
2015-10-30 10:36:56 Vitaly Sedelnik mos/7.0.x: importance Undecided Medium
2015-11-12 10:28:41 Vitaly Sedelnik mos/8.0.x: milestone 6.0-updates 8.0
2015-11-13 12:38:06 Vitaly Sedelnik mos/6.0.x: milestone 6.0-mu-7 6.0-updates
2015-11-19 10:38:01 Denis Meltsaykin mos/6.1.x: status Confirmed Won't Fix
2015-11-19 10:38:04 Denis Meltsaykin mos/6.0.x: status Confirmed Won't Fix
2015-12-24 13:17:04 Roman Podoliaka nominated for series mos/9.0.x
2015-12-24 13:17:04 Roman Podoliaka bug task added mos/9.0.x
2015-12-24 13:17:08 Roman Podoliaka mos/9.0.x: status New Confirmed
2015-12-24 13:17:10 Roman Podoliaka mos/9.0.x: importance Undecided Medium
2015-12-24 13:17:16 Roman Podoliaka mos/9.0.x: assignee MOS Nova (mos-nova)
2015-12-24 13:17:18 Roman Podoliaka mos/9.0.x: milestone 9.0
2015-12-24 13:17:24 Roman Podoliaka tags customer-found support area-nova customer-found support
2015-12-24 13:17:31 Roman Podoliaka mos/8.0.x: status Confirmed Won't Fix
2015-12-24 13:17:34 Roman Podoliaka mos/7.0.x: status Confirmed Won't Fix
2016-02-10 16:40:44 Timur Nurlygayanov mos: status Confirmed Won't Fix
2016-02-12 16:57:28 Vitaly Sedelnik tags area-nova customer-found support area-nova customer-found support wontfix-feature
2016-03-28 13:49:31 Timur Nurlygayanov tags area-nova customer-found support wontfix-feature area-nova customer-found keep-in-9.0 support wontfix-feature
2016-03-29 12:10:04 Roman Podoliaka mos/9.0.x: assignee MOS Nova (mos-nova) Timur Nurlygayanov (tnurlygayanov)
2016-03-29 12:10:06 Roman Podoliaka mos/9.0.x: status Confirmed Incomplete
2016-03-29 12:10:14 Roman Podoliaka bug added subscriber Roman Podoliaka
2016-04-04 13:50:09 Timur Nurlygayanov mos/9.0.x: status Incomplete Won't Fix
2016-04-04 13:50:17 Timur Nurlygayanov mos/9.0.x: status Won't Fix Invalid