Настройка mTLS

Конфигурирование веб-сервера Apache для mTLS

Для использования mTLS между компонентами Termidesk нужно выполнить конфигурирование веб-сервера apache. Для этого:

  • изменить конфигурационный файл /etc/apache2/sites-available/termidesk.conf, указав:

Указанные пути к сертификатам используются в качестве примера.
SSLEngine on
SSLCertificateFile      /home/cld/certs/server.cert.pem
SSLCertificateKeyFile   /home/cld/certs/server.key.pem
SSLCACertificateFile    /home/cld/certs/ca.cert.pem
#       SSLVerifyClient require
#       SSLVerifyClient optional
#       SSLVerifyClient none

#SSLVerifyClient require|optional|none

# Для корректной работы 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-I-DN expr=%{SSL_CLIENT_I_DN}
RequestHeader set X-TDSK-SSL-CLIENT-SERIAL expr=%{SSL_CLIENT_M_SERIAL}
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=%{escape:%{SSL_CLIENT_CERT}}"
  • перезапустить веб-сервер:

sudo systemctl restart apache2

Конфигурирование компонентов Termidesk для mTLS

Общие сведения о поддержке mTLS компонентами Termidesk

Termidesk поддерживает взаимную аутентификацию между компонентами Termidesk по протоколу mTLS.

В Termidesk версии 7.0 настройка mTLS поддерживается в компонентах:

  • «Универсальный диспетчер» для всех ролей («Портал администратора», «Портал пользователя», «Агрегатор администратора», «Агрегатор пользователя»);

  • «Менеджер рабочих мест»;

  • «Агент виртуального рабочего места»;

  • «Сессионный агент»;

  • TERA;

  • «Шлюз», реализованный «Балансировщиком нагрузки Термидеск Коннект» (Termidesk Connect).

Для настройки нужно:

  • загрузить сертификаты для mTLS на узел каждого компонента;

  • указать ранее загруженные сертификаты в конфигурационных файлах каждого компонента, участвующего во взаимодействии по mTLS;

  • выбрать сценарии подключений mTLS для сервера Termidesk. Сценарии определяют, между какими компонентами будет использоваться взаимная аутентификация. Выбор сценариев задается в параметре MTLS_CONNECTIONS конфигурационного файла /etc/opt/termidesk-vdi/termidesk.conf (см. подраздел Конфигурационный файл termidesk.conf). При распределенной установке серверных компонентов Termidesk параметр может быть задан на каждом узле:

    • узле «Универсального диспетчера»;

    • узле «Менеджер рабочих мест»;

  • выбрать режим mTLS в конфигурации сервера Termidesk и в каждом компоненте, с которым предполагается взаимодействие и который поддерживает mTLS:

    • для сервера Termidesk («Универсальный диспетчер» и его ролей, «Менеджер рабочих мест») режим mTLS задается в параметре MTLS_MODE конфигурационного файла /etc/opt/termidesk-vdi/termidesk.conf;

    • для компонентов Termidesk режим mTLS задается в конфигурационных файлах каждого компонента;

  • выполнить настройку веб-сервера apache для mTLS (см. подраздел Конфигурирование веб-сервера Apache для mTLS);

  • в настройках веб-браузера, из которого будет выполняться подключение к серверу Termidesk, добавить корневой сертификат УЦ в список доверенных (пример для Mozilla Firefox):

    • перейти в меню «Настройки»;

    • выбрать раздел «Приватность и защита». На открывшейся странице переместиться к пункту «Защита - Сертификаты» и нажать экранную кнопку [Просмотр сертификатов…​];

    • в открывшемся окне перейти во вкладку «Центры сертификации» и нажать экранную кнопку [Импортировать];

    • выбрать ранее сохраненный файл корневого сертификата УЦ и нажать экранную кнопку [Открыть];

    • в открывшемся окне загрузки сертификата выбрать цели импорта. Рекомендуется отметить все предложенные варианты и затем нажать экранную кнопку [ОК].

При настроенном режиме mTLS подключение к серверу Termidesk выполняется по его FQDN.

Пример конфигурирования mTLS между компонентами «Универсальный диспетчер» и «Агент виртуального рабочего места»

Пример приведен для компонентов Termidesk, установленных в ОС Astra Linux Special Edition 1.8.

Конфигурирование узла «Универсального диспетчера», установленного с ролями «Портал администратора», «Портал пользователя»:

  • загрузить клиентские сертификаты и ключи для mTLS:

    • скопировать их в каталог /etc/opt/termidesk-vdi/;

    • назначить владельцем каждого файла пользователя termidesk, пример:

      sudo chown termidesk:termidesk /etc/opt/termidesk-vdi/<имя>.pem
    • изменить права на каждый файл:

      sudo chmod 600 /etc/opt/termidesk-vdi/<имя>.pem
  • указать клиентский сертификат, ключ к нему и корневой сертификат УЦ в конфигурационном файле /etc/opt/termidesk-vdi/termidesk.conf в параметрах MTLS_CLIENT_CERT, MTLS_CLIENT_KEY, MTLS_CLIENT_CA соответственно;

  • в параметре MTLS_CONNECTIONS задать значение va_agent;

  • в параметре MTLS_MODE задать значение permissive;

  • перезагрузить службу termidesk-vdi:

sudo systemctl restart termidesk-vdi

Конфигурирование узла «Агента виртуального рабочего места»:

  • загрузить серверные сертификаты и ключи для mTLS:

    • скопировать их в каталог /etc/termidesk;

    • назначить владельцем каждого файла пользователя root, пример:

      sudo chown root:root /etc/termidesk/<имя>.pem
    • изменить права на каждый файл:

      sudo chmod 600 /etc/termidesk/<имя>.pem
  • загрузить клиентские сертификаты и ключи для mTLS аналогично пункту выше;

  • в графическом интерфейсе ОС перейти «Звезда - Программы - Инструменты», выбрать ярлык «VDI Agent Configuration» и сконфигурировать параметры:

    Предаполагается, что подключение к серверу Termidesk уже было указано, поэтому здесь указаны только параметры, необходимые для mTLS.

    • «mTLS»: выбрать значение «Разрешительный режим»;

    • «Источник сертификатов»: выбрать значение «Файловая система»;

    • «Сервер»: указать в параметрах «Цепочка ЦС», «Сертификат», «Закрытый ключ» ранее загруженные файлы сертификатов и ключей. При необходимости заполнить параметр «Пароль» (если ключ защищен паролем) и отметить пункт «Использовать как клиентский сертификат» (если загруженный сертификат может использоваться и как серверный, и как клиентский);

    • «Клиент»: аналогично указать клиентские сертификаты. Если ранее был отмечен пункт «Использовать как клиентский сертификат», то выполнять действие не требуется;

  • для проверки корректности подключения к серверу Termidesk необходимо нажать экранную кнопку [Проверить]. Результатом проверки должно являться сообщение «Проверка успешно завершена».

В случае, если сертификаты узлов «Универсального диспетчера» и «Агента виртуального рабочего места» созданы в разных УЦ, то потребуется перечислить корневые и промежуточные сертификаты всех УЦ для компонента «Агента виртуального рабочего места». Пример:

  • пусть файл корневого УЦ, выписавшего сертификаты, загруженные для «Универсального диспетчера», содержит информацию (приведен не полный текст сертификата):

-----BEGIN CERTIFICATE-----
IBAgIBATANBg
-----END CERTIFICATE-----
  • пусть файл корневого УЦ, выписавшего сертификаты, загруженные для «Агента виртуального рабочего места», содержит информацию (приведен не полный текст сертификата):

-----BEGIN CERTIFICATE-----
MIIEfDCCAuSgAw
-----END CERTIFICATE-----
  • тогда следует в файл корневого УЦ, выписавшего сертификаты, загруженные для «Агента виртуального рабочего места», добавить информацию об еще одном УЦ:

-----BEGIN CERTIFICATE-----
MIIEfDCCAuSgAw
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
IBAgIBATANBg
-----END CERTIFICATE-----