Перенаправление на HTTPS
Перенаправление на HTTPS
Для того, чтобы веб-интерфейс Termidesk работал по безопасному протоколу HTTPS, используются настройки веб-сервера apache
для перенаправления запроса с протокола HTTP на HTTPS.
Настройки перенаправления задаются в конфигурационном файле /etc/apache2/sites-available/termidesk.conf
. После внесения любых изменений в этот файл необходимо перезапустить службу apache2
:
sudo systemctl restart apache2
Перенаправление на HTPS настроено по умолчанию после установки Termidesk. При необходимости использования незащищенного протокола HTTP администратор должен изменить файл /etc/apache2/sites-available/termidesk.conf
, раскомментировав настройки VirtualHost и закомментировав настройки HTTPS.
Пример исходного конфигурационного файла:
#<VirtualHost *:80> # 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 #</VirtualHost> # Сайт для принудительного перенаправления на протокол 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 SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/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>
Пример конфигурационного файла для работы по незащищенному протоколу HTTP:
<VirtualHost *:80> 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 </VirtualHost> # Сайт для принудительного перенаправления на протокол 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 # SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem # SSLCertificateKeyFile /etc/ssl/private/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>