Download PDF
Download page Защищенное подключение к компоненту «Универсальный диспетчер».
Защищенное подключение к компоненту «Универсальный диспетчер»
Настройка защищенного подключения к компоненту «Универсальный диспетчер»
Для настройки защищенного подключения к компоненту «Универсальный диспетчер» нужно:
- скопировать закрытый ключ формата
.key
и сертификат формата.pem
в каталог/etc/opt/termidesk-vdi
:
sudo cp /etc/ssl/private/ssl-cert-snakeoil.key /etc/opt/termidesk-vdi/
sudo cp /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/opt/termidesk-vdi/
- назначить права по использованию ключа и сертификата пользователю
termidesk
:
sudo chown termidesk:termidesk /etc/opt/termidesk-vdi/ssl-cert-snakeoil.*
- предоставить права на чтение файла
ssl-cert-snakeoil.key
:
:~$ sudo chmod 644 /etc/opt/termidesk-vdi/ssl-cert-snakeoil.key
- отредактировать файл
/lib/systemd/system/termidesk-vdi.service
, добавив аргументы--certfile
и--keyfile
с указанием пути к файлам ключа и сертификата:
--keyfile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.key
--certfile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.pem
- пример содержимого файла
termidesk-vdi.service:
[Unit]
Description=Termidesk-VDI daemon
After=network.target
[Service]
PIDFile=/run/termidesk-vdi/pid
Restart=on-failure
RestartSec=5
User=termidesk
Group=termidesk
WorkingDirectory=/opt/termidesk/share/termidesk-vdi/src
Environment=VIRTUAL_ENV=/opt/termidesk/share/termidesk-vdi/venv
Environment=PATH=/opt/termidesk/share/termideskvdi/venv/bin:/usr/sbin:/usr/bin:/sbin:/bin
EnvironmentFile=/etc/opt/termidesk-vdi/termidesk.conf
ExecStart=/bin/bash -c '/opt/termidesk/share/termidesk-vdi/venv/bin/gunicorn
server.wsgi:application --timeout 60 --workers $(expr $(nproc --all) \* 3) --keyfile
/etc/opt/termidesk-vdi/ssl-cert-snakeoil.key --certfile /etc/opt/termidesk-vdi/ssl-certsnakeoil.pem --bind 127.0.0.1:8000'
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- перезапустить сервис
termidesk-vdi.service:
sudo systemctl daemon-reload && systemctl restart termidesk-vdi.service
- отредактировать файл
/etc/apache2/sites-available/termidesk.conf
:- добавить в файл следующие строки:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
где:
SSLProxyEngine
- использование защищенного подключения по протоколу SSL/TLS, on
- включить использование;
SSLProxyVerify
- параметр контроля проверки сертификата. Доступны следующие значения: none
- отключение проверки сертификата, optional
- необязательная проверка сертификата, require
- обязательная проверка сертификата, optional_no_ca
- проверка сертификата без обязательной проверки цепочки сертификатов;
SSLProxyCheckPeerCN
- проверка общего имени (Common Name, CN) сервера в сертификате, off
- выключить проверку;
SLProxyCheckPeerName
- проверка имени узла сервера в сертификате, off
- выключить проверку;
SSLProxyCheckPeerExpire
- проверка срока действия сертификата, off
- выключить проверку.
- изменить значения в параметрах
ProxyPass
иProxyPassReverse
сhttp
наhttps
:
- изменить значения в параметрах
ProxyPass / https://127.0.0.1:8000/
ProxyPassReverse / https://127.0.0.1:8000/
- изменить значения параметров
SSLCertificateFile
иSSLCertificateKeyFile
, указав путь до сертификатов:
- изменить значения параметров
SSLCertificateFile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.key
- пример файла
termidesk.conf
:
- пример файла
# Сайт для принудительного перенаправления на протокол HTTPS.
<VirtualHost *:80>
ServerName #HOSTNAME#
ProxyPass /websockify ws://127.0.0.1:5099/ timeout=10800
ProxyPassReverse /websockify ws://127.0.0.1:5099/ timeout=10800
RewriteEngine On
RewriteCond "%{REQUEST_URI}" !^/websockify.*
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=308,L]
RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName #HOSTNAME#
DocumentRoot /opt/termidesk/share/termidesk-vdi/src
Alias /media/ /opt/termidesk/share/termidesk-vdi/src/media/
Alias /static/ /opt/termidesk/share/termidesk-vdi/src/static/
<Directory /opt/termidesk/share/termidesk-vdi/src/static>
Order deny,allow
Allow from all
Require all granted
</Directory>
<Directory /opt/termidesk/share/termidesk-vdi/src/media>
Order deny,allow
Allow from all
Require all granted
</Directory>
RewriteEngine on
ProxyTimeout 70
ProxyPreserveHost On
ProxyRequests Off
ProxyPassMatch ^/media/ !
ProxyPassMatch ^/static/ !
ProxyPass /websockify ws://127.0.0.1:5099/ timeout=10800
ProxyPassReverse /websockify ws://127.0.0.1:5099/ timeout=10800
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLCertificateFile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.key
# Для корректной работы Termidesk с MTLS необходимо настроить директивы ниже
# в соответствии с условиями и требованиями окружения инсталляции
# SSLCACertificateFile
# SSLVerifyClient
# SSLVerifyDepth
# Проброс параметров клиентского сертификата в Termidesk
# через набор собственных заголовков
RequestHeader set X-TDSK-SSL_CLIENT_FORMAT 'apache'
RequestHeader set X-TDSK-SSL_CLIENT_S_DN expr=%{SSL_CLIENT_S_DN}
RequestHeader set X-TDSK-SSL_CLIENT_VALIDITY_START expr=%{SSL_CLIENT_V_START}
RequestHeader set X-TDSK-SSL_CLIENT_VALIDITY_END expr=%{SSL_CLIENT_V_END}
RequestHeader set X-TDSK-SSL_CLIENT_VERIFY expr=%{SSL_CLIENT_VERIFY}
RequestHeader set X-TDSK-SSL_CLIENT_CERT expr=%{SSL_CLIENT_CERT}
</VirtualHost>
</IfModule>
- перезапустить веб-сервер:
sudo systemctl daemon-reload && systemctl restart apache2.service
- проверить доступность веб-интерфейса.