Бухгалтерия переезжает на терминальный сервер, и сразу же встаёт вопрос: как подписывать отчёты и документы ЭДО, если 1С и программы для сдачи отчётности теперь работают на сервере, а токен с подписью воткнут в компьютер на рабочем месте? Ответ — перенаправление смарт-карт по RDP. Работает оно надёжно, но только если правильно настроены обе стороны и куплена правильная лицензия КриптоПро.
Коротко: токен остаётся на компьютере пользователя, в RDP-клиенте включается перенаправление смарт-карт, а на сервере групповая политика не должна его запрещать. На сервер ставятся КриптоПро CSP с серверной лицензией и драйверы токенов, а на клиент — драйвер токена, если без него носитель не определяется. Токен, вставленный прямо в USB сервера, пользователям в RDP-сеансах виден не будет.
Как это работает
При перенаправлении смарт-карт служба смарт-карт на терминальном сервере обращается к считывателю, подключённому к компьютеру пользователя. Для программ на сервере токен выглядит как обычный считыватель смарт-карт, хотя физически он остаётся на рабочем месте. Каждый пользователь в своём сеансе видит только свои считыватели, поэтому десять бухгалтеров с десятью токенами друг другу не мешают.
Из этого следует важное ограничение. Токен, вставленный в сам сервер, через RDP в пользовательские сеансы не пробрасывается. Это особенность архитектуры RDP в Windows, а не настройка КриптоПро, и об этом прямо пишут в документации Рутокен и Аладдин.
Что нужно на сервере
- КриптоПро CSP актуальной версии с серверной лицензией.
- Драйверы и ПО токенов. Для Рутокена — комплект «Драйверы Рутокен для Windows», для JaCarta — «Единый Клиент JaCarta». Ставьте их на сервер, даже если пользователи сами ничего на сервере не запускают: криптопровайдер работает с токеном именно оттуда.
- Корневые сертификаты удостоверяющих центров, если программы проверяют цепочку на сервере.
- Если подписание идёт через браузер — КриптоПро ЭЦП Browser plug-in и расширение для используемого браузера.
Лицензия КриптоПро CSP на терминальный сервер
В инструкции КриптоПро сказано: если CSP используется на клиентской машине, нужна лицензия клиентского типа, если на сервере — серверная. Клиентская лицензия «на рабочее место» в серверной ОС не применяется. Для терминального сервера покупается серверная лицензия, и, по ответам сотрудников КриптоПро на их форуме, отдельные лицензии на каждого пользователя терминала в этом случае не нужны. Цены и актуальные условия лучше уточнить у поставщика перед покупкой.
Без ввода серийного номера после установки работает ознакомительная лицензия с ограниченным сроком. Серийный номер вводится на вкладке «Общие» панели управления КриптоПро CSP кнопкой «Ввод лицензии» или в оснастке «Управление лицензиями КриптоПро PKI» (Пуск → КРИПТО-ПРО). Ставлю себе напоминание: когда ознакомительный срок заканчивается, подпись перестаёт работать сразу у всех пользователей сервера.
Что нужно на клиенте
- Драйвер токена, если система не видит носитель без него. Современные Рутокен Lite и Рутокен ЭЦП 2.0/3.0 работают через стандартный драйвер USB CCID, встроенный в Windows. Для старого Рутокен S, по документации Рутокен, драйверы нужны и на клиенте, и на сервере. Для JaCarta Аладдин рекомендует ставить ПО и на клиент, и на сервер.
- В «Подключении к удалённому рабочему столу» (
mstsc): «Показать параметры» → «Локальные ресурсы» → «Подробнее» → отметить «Смарт-карты» (в новых версиях Windows пункт называется «Смарт-карты или Windows Hello для бизнеса»). - Если пользователи подключаются через готовый
.rdp-файл, в нём должна быть строка:redirectsmartcards:i:1
КриптоПро CSP на клиенте для самого проброса не требуется. Он нужен, только если пользователь подписывает документы ещё и локально, вне терминального сервера.
Настройка сервера
Групповая политика
Проверьте политику «Конфигурация компьютера» → «Административные шаблоны» → «Компоненты Windows» → «Службы удалённых рабочих столов» → «Узел сеансов удалённых рабочих столов» → «Перенаправление устройств и ресурсов» → «Не разрешать перенаправление устройства чтения смарт-карт». Она должна быть в состоянии «Не задано» или «Отключено». По умолчанию перенаправление разрешено, но в доменах эту политику иногда включают ради безопасности. После изменения выполните gpupdate /force; Microsoft рекомендует перезагрузить сервер, чтобы настройка точно применилась (документация Microsoft по перенаправлению смарт-карт).
Служба смарт-карт
Get-Service SCardSvr, CertPropSvc
SCardSvr — служба «Смарт-карта», без неё считыватели не работают. CertPropSvc («Распространение сертификата») копирует сертификаты со смарт-карты в личное хранилище пользователя.
Проверка в сеансе
Подключитесь к серверу с токеном и выполните в сеансе:
certutil -scinfo
Если перенаправление работает, команда покажет считыватель и состояние карты. Если считывателей нет, проблема на уровне RDP или политики, и КриптоПро здесь ни при чём.
КриптоПро CSP
Запустите панель управления КриптоПро CSP с правами администратора, на вкладке «Оборудование» нажмите «Настроить считыватели» и убедитесь, что в списке есть «Все считыватели смарт-карт». По умолчанию КриптоПро поддерживает все считыватели смарт-карт, но после ручных настроек этот пункт иногда пропадает. Затем каждый пользователь в своём сеансе устанавливает сертификат: вкладка «Сервис» → «Просмотреть сертификаты в контейнере» → выбрать контейнер на токене → «Установить». Сертификат попадает в личное хранилище именно этого пользователя, поэтому шаг повторяется для каждого.
Типичные ошибки «не видит токен»
| Симптом | Причина | Решение |
|---|---|---|
В сеансе certutil -scinfo не показывает считывателей |
Не отмечены «Смарт-карты» в клиенте или включена запрещающая политика | Включить перенаправление в клиенте, проверить политику, перезагрузить сервер |
| Токен вставлен в сервер, но пользователи его не видят | Так и должно быть: RDP не отдаёт в сеансы токены, подключённые к серверу | Подключать токен к компьютеру пользователя |
| Считыватель виден, КриптоПро просит «Вставьте ключевой носитель» | На сервере нет драйвера или ПО токена, либо в КриптоПро не настроены считыватели | Установить драйверы Рутокен или Единый Клиент JaCarta на сервер, проверить «Все считыватели смарт-карт» |
| Единый Клиент JaCarta в сеансе не показывает токен | Клиент запущен до подключения сеанса | Перезапустить Единый Клиент на сервере из RDP-сеанса (рекомендация из базы знаний Аладдин) |
| Ошибка 0x80090016 «Набор ключей не существует» | Не найден закрытый ключ: сертификат установлен без привязки к контейнеру, либо токен с этим контейнером не подключён | Переустановить сертификат через «Просмотреть сертификаты в контейнере» |
| Подпись перестала работать у всех сразу | Закончилась ознакомительная лицензия КриптоПро | Ввести серийный номер серверной лицензии |
| У одного пользователя работает, у другого нет | Сертификат установлен только в профиль первого | Установить сертификат в сеансе второго пользователя |
Настройка ЭЦП на терминальном сервере обычно занимает время не из-за сложности, а из-за количества мелочей: драйверы, лицензии, сертификаты каждого пользователя, плагины для порталов. Если не хочется разбираться самому, можно заказать настройку ЭЦП, ЭДО и токенов. А если сервер для бухгалтерии ещё только выбирается, можно не поднимать его самому и посмотреть вариант с арендой готового сервера для бухгалтерии.
Частые вопросы
Можно ли вставить все токены в сервер и не возиться с перенаправлением?
Штатно — нет: токены, подключённые к серверу, в RDP-сеансах не видны. Кроме того, подпись — личный инструмент владельца, и держать все токены в одном месте рискованно. Правильная схема — токен у пользователя, перенаправление по RDP.
Нужен ли КриптоПро CSP на компьютере пользователя?
Для работы через терминальный сервер — нет, достаточно, чтобы токен определялся в системе. КриптоПро на клиенте нужен, только если подписывать документы и локально.
Можно ли скопировать ключ в реестр сервера?
Технически КриптоПро позволяет хранить контейнер в реестре, если ключ экспортируемый. Но тогда подпись доступна любому, кто получит доступ к профилю на сервере, а не только владельцу токена. Я так делаю только для служебных ключей и по согласованию с владельцем подписи.
Сколько лицензий КриптоПро нужно на терминальный сервер с двадцатью пользователями?
Серверная лицензия на этот сервер. Клиентские лицензии на рабочие места покупаются, если КриптоПро используется на самих компьютерах пользователей. Перед покупкой уточните условия у КриптоПро или поставщика: они могут меняться между версиями CSP.