Защищенное подключение к компоненту «Универсальный диспетчер»
Настройка защищенного подключения к компоненту «Универсальный диспетчер»
Для настройки защищенного подключения к компоненту «Универсальный диспетчер» нужно:
- скопировать закрытый ключ формата
.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
- проверить доступность веб-интерфейса.