Проксирование Sunstone панели через зашифрованное соединения с Web-сервером (HTTPS ), а также с использованием WebSocket (WSS ) с помощью сертификата от Let`s Encrypt для работы noVNC .
В своем блоге я уже рассказывал о том, как сделать проксирование Sunstone панели с помощью самоподписанных сертификатов
Выполняем настройку NGINX map $http_upgrade $connection_upgrade {default upgrade;'' close; } upstream sunstone { server 127.0.0.1:9869 ; } upstream websocketproxy { server 127.0.0.1:29876 ; } server { listen *:80 ; server_name yourdomain.com; rewrite ^(.*)$ https://yourdomain.com$1 permanent ; } server { listen 443 ssl http2 deferred; ssl on ; ssl_session_timeout 24h ; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ; access_log /var/log/nginx/opennebula-sunstone-access.log; error_log /var/log/nginx/opennebula-sunstone-error .log; client_max_body_size 2G ; location / { proxy_pass http://sunstone; proxy_redirect off ; log_not_found off ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header Host $http_host ; proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for ; } location /websockify { proxy_pass http://websocketproxy; proxy_http_version 1 .1 ; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection $connection_upgrade ; add_header Access-Control-Allow-Origin *; } }
Выполняем конфигурацию Sunstone ... :host: 127.0.0.1 :port: 9869 :vnc_proxy_port: 29876 :vnc_proxy_support_wss: only :vnc_proxy_cert: /etc/letsencrypt/live/yourdomain.com/fullchain.pem :vnc_proxy_key: /etc/letsencrypt/live/yourdomain.com/privkey.pem :vnc_proxy_ipv6: false :vnc_request_password: false
Особое внимание слеует обратить на то, чтобы пользователь oneadmin
имел доступ к сертификатам.
Поскольку используем сертификат от Let`s Encrypt , то выдадим соответствующие права на папку:
chown -R oneadmin:oneadmin /etc/letsencrypt
После внесения всех изменений останавливаем сервис opennebula-sunstone
:
systemctl stop opennebula-sunstone
Затем перезагружаем сервис opennebula-novnc
:
systemctl restart opennebula-novnc
И только после этого вновь запускаем opennebula-sunstone
:
systemctl start opennebula-sunstone
Если все выполнено правильно и без ошибок, то соединения Sunstone и WebSocket будут работать по HTTPS протоколу с использованием.