Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline DDimka  
#1 Оставлено : 31 января 2020 г. 18:06:07(UTC)
DDimka

Статус: Новичок

Группы: Участники
Зарегистрирован: 31.01.2020(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Добрый день.

ОС: Windows 7 x32
Token: Aktiv Rutoken ECP
Crypto pro: 4.0

Пытаемся использовать подпись через MS Crypto API под сетевой службой (Network Service).
Пин-код контейнера сохраняем в контекст сертификата.
На Windows 10 x64 все отлично работает.
На Windows 7 x32 выдается ошибка:
signtsf.c:468:Cryptographic context could not be acquired.
Error number 0x80090016 (-2146893802).
Набор ключей не существует. (ошибка взята из утилиты csptest, запущенной с правами network service-а, но если вызывать через API - тоже самое).

Пробовали давать права методами:
1. https://support.cryptopr...sluzhbkh-windows-iis-etc
2. https://docs.microsoft.c...cess?redirectedfrom=MSDN

Однако, они работают только для контейнеров вроде локального диска. Для нашего сертификата не работают (никаких ошибок не возникает, однако эффекта нет).
Например, в методе из п.1. Network Service - запись на секунду появляется в списке, после подтверждения и открытия окна управления приватными ключами список разрешений возвращается в первозданное состояние.

Замечание: если в Windows 7 запустить службу с правами LocalService - все работает.

Вопрос в том, как заставить это работать на Windows 7 с правами NetworkService-а.

Спасибо.


Offline two_oceans  
#2 Оставлено : 1 февраля 2020 г. 1:12:00(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 396 раз в 366 постах
Добрый день.
Мне вот тоже интересна такая конфигурация с запуском из-под службы. Поэтому вопрос: права прописывали на Network Service или на виртуальную учетную запись конкретной службы? В одной из тем видел, что с виртуальной учетной записью метод 1 вроде бы не работает. Как с этим в Вашем окружении?

Отредактировано пользователем 1 февраля 2020 г. 1:13:00(UTC)  | Причина: Не указана

Offline DDimka  
#3 Оставлено : 3 февраля 2020 г. 11:35:04(UTC)
DDimka

Статус: Новичок

Группы: Участники
Зарегистрирован: 31.01.2020(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Автор: two_oceans Перейти к цитате
Добрый день.
Мне вот тоже интересна такая конфигурация с запуском из-под службы. Поэтому вопрос: права прописывали на Network Service или на виртуальную учетную запись конкретной службы? В одной из тем видел, что с виртуальной учетной записью метод 1 вроде бы не работает. Как с этим в Вашем окружении?


На Network Service. Целевая служба запускается под этой учетной записью. Главный нюанс в том, что в Win10 для работы достаточно просто сохранить пин в контекст сертификата (как вариант), либо использовать прямо при подписи. Очевидно, в Win7 Network Service не может достучаться до контейнеров, расположенных на токене (не видит либо самого токена, либо контейнера). Пытался изучать разницу в работе через procmon, но не осилил.

Offline Агафьин Сергей  
#4 Оставлено : 3 февраля 2020 г. 13:42:16(UTC)
Grey

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 12.08.2013(UTC)
Сообщений: 834
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 5 раз
Поблагодарили: 215 раз в 174 постах
Добрый день.
Если я не ошибаюсь, в Win 7 у NetworkService нет прав на обращение к службе смарт-карт. Соответственно, подгружать в службу, запущенную под данным пользователем, провайдер в режиме библиотеки можно, но контейнеры на токенах видны не будут. Попробуйте запустить провайдер в режиме службы - тогда работа с токенами будет проходить в нашей службе и проблем быть не должно.
С уважением,
Сергей
Техническую поддержку оказываем здесь.
Наша база знаний.
Offline DDimka  
#5 Оставлено : 3 февраля 2020 г. 14:31:00(UTC)
DDimka

Статус: Новичок

Группы: Участники
Зарегистрирован: 31.01.2020(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Автор: Агафьин Сергей Перейти к цитате
Добрый день.
Если я не ошибаюсь, в Win 7 у NetworkService нет прав на обращение к службе смарт-карт. Соответственно, подгружать в службу, запущенную под данным пользователем, провайдер в режиме библиотеки можно, но контейнеры на токенах видны не будут. Попробуйте запустить провайдер в режиме службы - тогда работа с токенами будет проходить в нашей службе и проблем быть не должно.


Большое спасибо. Это помогает, НО с БОЛЬШИМ НО.
После включения работы через службу нужно обязательно хотя бы один раз "подписаться" через админскую учетную запись или Local Service-ную (ту, у которой изначально был доступ). Если этого не сделать - не работает. Перезагрузка не помогает. Более того - после перезагрузки опять потребуется один раз подписать через админскую учетку.

Т.е. в моем случае помогает включение службы и однократная подпись под другой учетной записью.
Мне трудно это объяснить, но два раза воспроизвелось именно так.

В чем может быть проблема?
Offline DDimka  
#6 Оставлено : 4 февраля 2020 г. 18:53:37(UTC)
DDimka

Статус: Новичок

Группы: Участники
Зарегистрирован: 31.01.2020(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Автор: DDimka Перейти к цитате
Автор: Агафьин Сергей Перейти к цитате
Добрый день.
Если я не ошибаюсь, в Win 7 у NetworkService нет прав на обращение к службе смарт-карт. Соответственно, подгружать в службу, запущенную под данным пользователем, провайдер в режиме библиотеки можно, но контейнеры на токенах видны не будут. Попробуйте запустить провайдер в режиме службы - тогда работа с токенами будет проходить в нашей службе и проблем быть не должно.


Большое спасибо. Это помогает, НО с БОЛЬШИМ НО.
После включения работы через службу нужно обязательно хотя бы один раз "подписаться" через админскую учетную запись или Local Service-ную (ту, у которой изначально был доступ). Если этого не сделать - не работает. Перезагрузка не помогает. Более того - после перезагрузки опять потребуется один раз подписать через админскую учетку.

Т.е. в моем случае помогает включение службы и однократная подпись под другой учетной записью.
Мне трудно это объяснить, но два раза воспроизвелось именно так.

В чем может быть проблема?


Уточнение:
Достаточно просто проенумерейтить, например, хранилища, чтобы все разработало, причем от любой учетки, которая эта может (можно даже без админа).
Вопрос: как обойти эту необходимость - хочется оставаться в рамках Network Service и не добавлять лишних частей.
Offline Агафьин Сергей  
#7 Оставлено : 5 февраля 2020 г. 14:58:31(UTC)
Grey

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 12.08.2013(UTC)
Сообщений: 834
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 5 раз
Поблагодарили: 215 раз в 174 постах
Да, это правда. Без данного обращения работать не будет.
Исправить это в обозримой перспективе не представляется возможным, т.к. связано с ограничениями ОС Windows на доступ к смарт-картам.

Наша строгая рекомендация - перестать пользоваться NetworkService для работы с ключами, т.к. то, что из него удаётся получить доступ к картам в Win10 больше похоже на ошибку операционной системы, чем на новую фичу.
С уважением,
Сергей
Техническую поддержку оказываем здесь.
Наша база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.