Инструкция актуализирована для версии Termidesk: 5.1. |
АннотацияВ инструкции приведена последовательность действий по настройке защищенного подключения к компоненту «Универсальный диспетчер». |
Настройка защищенного подключения к компоненту «Универсальный диспетчер»Для настройки защищенного подключения к компоненту «Универсальный диспетчер» нужно: |
.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/ |
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 |
где:
|
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:# Начиная с версии 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>
|
sudo systemctl daemon-reload && systemctl restart apache2.service |
https://disp.termidesk.local.где:
|