Рейтинг:0

Предоставление (виртуальной) смарт-карты доступной для системной службы

флаг br

У меня есть виртуальная машина под управлением Windows Server 2019 Datacenter Core, на которой работает агент сборки Jenkins в качестве неинтерактивной службы с собственной локальной учетной записью пользователя (.\строить).

Теперь я хотел бы добавить подпись кода. Чтобы иметь хоть какое-то подобие безопасности, я хочу использовать виртуальную смарт-карту, основанную на криптографических операциях на хосте, поэтому злоумышленнику, заинтересованному в копировании ключевого материала, необходимо будет выйти из виртуальной машины.

Я настроил виртуальный USB-считыватель CCID с постоянно вставленной картой, и он отображается в Windows:

PS> Получить-PnpDevice
...
Ошибка SmartCardReader Microsoft Usbccid Smartcard Reader (WUDF) USB\VID_08E6...
...

Во-первых, Ошибка состояние касается. Я применил это исправление, что, кажется, немного улучшило ситуацию (карта появляется ХОРОШО сразу после загрузки), но это не кажется постоянным.

Однако проблема, в которой я действительно застрял, - это модель безопасности для доступа к смарт-картам. Большая часть документации, которую я смог найти, касается использования смарт-карты для входа в систему, для которой политика проста: пользовательский интерфейс входа в систему имеет доступ к карте для проверки учетных данных, а затем передает этот доступ сеансу пользователя.

Однако в моем случае у меня есть неинтерактивный вход в систему, который не связан с рабочим столом. Когда я вручную запускаю SCardSvr и ScDeviceEnum сервисы, я не могу получить доступ к карте даже как Администратор при входе в систему через SSH:

Диспетчер ресурсов смарт-карт Microsoft не запущен.
SCardAccessStartedEvent: служба находится в неизвестном состоянии.
CertUtil: команда -SCInfo FAILED: 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED)
CertUtil: Доступ запрещен.

что логично, а из локальной консоли, как Администратор, я получаю

PS> certutil -scinfo
Диспетчер ресурсов смарт-карт Microsoft работает.
Текущий статус считывателя/карты:
SCardEstablishContext: Диспетчер ресурсов смарт-карт не запущен. 0x8010001d (-2146435043 SCARD_E_NO_SERVICE)
Ошибка SCardEstablishContext для области пользователя.

Две службы также прекращают работу сами по себе через две минуты.

Вопросы:

  • Как я могу убедиться, что эмулируемая смарт-карта видна как вставленная, и, возможно, вывести список содержащихся в ней сертификатов?
  • Как я могу дать пользователю разрешение на доступ к смарт-карте (certutil -scinfo вероятно, покажет это)?
  • Как я могу импортировать сертификат, который уже существует на смарт-карте, в хранилище ключей локального пользователя? Нужен ли мне оригинальный сертификат P7 или я могу взять его с самой карты?
  • Нужно ли мне что-то делать, чтобы служба работала непрерывно, или решение проблем с доступом также позволит запустить ее по требованию?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.