PDF
Download PDF
Download page Настройка защищенного подключения к компоненту «Универсальный диспетчер».
Настройка защищенного подключения к компоненту «Универсальный диспетчер»
Аннотация
В инструкции приведена последовательность действий по настройке защищенного подключения к компоненту «Универсальный диспетчер».
Настройка защищенного подключения к компоненту «Универсальный диспетчер»
Для настройки защищенного подключения к компоненту «Универсальный диспетчер» нужно:
- скопировать закрытый ключ формата
.key
и сертификат формата.pem
в каталог/etc/opt/termidesk-vdi
:
:~$ sudo cp /etc/ssl/private/ssl-cert-snakeoil.key /etc/opt/termidesk-vdi/ && cp /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/opt/termidesk-vdi/
BASH
- назначить права по использованию ключа и сертификата пользователю
termidesk
:
:~$ sudo chown termidesk:termidesk /etc/opt/termidesk-vdi/ssl-cert-snakeoil.*
BASH
- предоставить права на чтение файла
ssl-cert-snakeoil.key
:
:~$ sudo chmod 644 /etc/opt/termidesk-vdi/ssl-cert-snakeoil.key
BASH
- отредактировать файл
/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
BASH
- пример содержимого файла
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
BASH
- перезапустить сервис
termidesk-vdi.service:
:~$ sudo systemctl daemon-reload && systemctl restart termidesk-vdi.service
BASH
- отредактировать файл
/etc/apache2/sites-available/termidesk.conf
:- добавить в файл следующие строки:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
BASH
где:
- «SSLProxyEngine» - параметр использования защищенного подключения по протоколу SSL/TLS;
- «SSLProxyVerify» - параметр контроля проверки сертификата. Доступны следующие значения:
- «none» - отключение проверки сертификата;
- «optional» - необязательная проверка сертификата;
- «require» - обязательная проверка сертификата;
- «optional_no_ca» - проверка сертификата без обязательной проверки цепочки сертификатов;
- «SSLProxyCheckPeerCN» - параметр проверки общего имени (Common Name, CN) сервера в сертификате;
- «SSLProxyCheckPeerName» - параметр проверки имени узла сервера в сертификате;
- «SSLProxyCheckPeerExpire» - параметр проверки срока действия сертификата.
- изменить значения в параметрах
ProxyPass
иProxyPassReverse
с «http» на «https»:
- изменить значения в параметрах
ProxyPass / https://127.0.0.1:8000/
ProxyPassReverse / https://127.0.0.1:8000/
BASH
- изменить значения параметров
SSLCertificateFile
иSSLCertificateKeyFile
, указав путь до сертификатов:
- изменить значения параметров
SSLCertificateFile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/opt/termidesk-vdi/ssl-cert-snakeoil.key
BASH
- пример файла
termidesk.conf
:
- пример файла
# Начиная с версии 4.2 сервера Termidesk по умолчанию все соединения
# перенаправляются в HTTPS.
# Сайт для принудительного перенаправления на протокол HTTPS.
<VirtualHost *:80>
ServerName td-broker-02
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 td-broker-02
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 / https://127.0.0.1:8000/
ProxyPassReverse / https://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>
BASH
- перезапустить веб-сервер:
:~$ sudo systemctl daemon-reload && systemctl restart apache2.service
BASH
- проверить доступность веб-интерфейса по адресу
https://disp.termidesk.local
.
где:
https://disp.termidesk.local
- IP-адрес или полное доменное имя узла компонента «Универсальный диспетчер» Termidesk.