Указанный файл не существует в смарт карте

Обновлено: 03.07.2024

Иногда при добавлении смарт-карты может появиться ошибка. Эта ошибка связана с определением устройств на компьютере и установкой для него драйвера. Самостоятельно компьютер не сможет найти подходящий драйвер так как почти все смарт карты снабжаются специальным программным обеспечением куда входит и драйвер для них.

Диспетчер ресурсов смарт-карт не выполняется

Решение 1:
Убедитесь в том, что на рабочей станции, к которой подключена добавляемая смарт-карта, запущена и работает служба Смарт-карта. Для управления работой служб необходимо обладать правами Локального администратора.

Решение 2:
Убедитесь в том, что адрес сервера Indeed CM добавлен в зону Местная интрасеть (Local Intranet) браузера рабочей станции, к которой подключена смарт-карта.

Криптопро не видит ключ JaCarta, решаем за минуту

Описание окружения

Есть виртуальная машина на Vmware ESXi 6.5, в качестве операционной системы установлена Windows Server 2012 R2. На сервере стоит КриптоПРО 4.0.9944, последней версии на текущий момент. С сетевого USB хаба, по технологии USB over ip, подключен ключ JaCarta. Ключ в системе видится, а вот в КриптоПРО нет.

Алгоритм решения проблем с JaCarta

КриптоПРО очень часто вызывает различные ошибки в Windows, простой пример (Windows installer service could not be accessed). Вот так вот выглядит ситуация, когда утилита КриптоПРО не видит сертификат в контейнере.


Как видно в утилите UTN Manager ключ подключен, он видится в системе в смарт картах в виде Microsoft Usbccid (WUDF) устройства, но вот CryptoPRO, этот контейнер не определяет и у вас нет возможности установить сертификат. Локально токен подключали, все было то же самое. Стали думать что сделать.

Возможные причины с определением контейнера

  1. Во первых, это проблема с драйверами, например, в Windows Server 2012 R2, JaCarta в идеале должна определяться в списке смарт карт как JaCarta Usbccid Smartcard, а не Microsoft Usbccid (WUDF)
  2. Во вторых если устройство видится как Microsoft Usbccid (WUDF), то версия драйверов может быть устаревшей, и из-за чего ваши утилиты будут не определять защищенный USB носитель.
  3. Устарелая версия CryptoPRO

Как решить проблему, что криптопро не видит USB ключ?

Создали новую виртуальную машину и стали ставить софт все последовательно.

  • Первым делом обновляем вашу операционную систему, всеми доступными обновлениями, так как Microsoft исправляет много ошибок и багов, в том числе и драйверами.
  • Вторым пунктом является, в случае с физическим сервером, установить все свежие драйвера на материнскую плату и все периферийное оборудование.
  • Далее устанавливаете Единый Клиент JaCarta.
  • Устанавливаете свежую версию КриптоПРО

Установка единого клиента JaCarta PKI


Далее полученный архив вы распаковываете и запускаете установочный файл, под свою архитектуру Windows, у меня это 64-х битная. Приступаем к установке Jacarta драйвера. Единый клиент Jacarta, ставится очень просто (НАПОМИНАЮ ваш токен в момент инсталляции, должен быть отключен). На первом окне мастера установки, просто нажимаем далее.


Принимаем лицензионное соглашение и нажимаем "Далее"


Чтобы драйвера токенов JaCarta у вас работали корректно, достаточно выполнить стандартную установку.


Если выберете "Выборочную установку", то обязательно установите галки:

  • Драйверы JaCarta
  • Модули поддержки
  • Модуль поддержки для КриптоПРО


Далее нажимаем "Установить".


Через пару секунд, Единый клиент Jacarta, успешно установлен.


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


Установка КриптоПРО

После установки JaCarta PKI, нужно установить КриптоПРО, для этого заходите на официальный сайт.


На текущий момент самая последняя версия КриптоПро CSP 4.0.9944. Запускаем установщик, оставляем галку "Установить корневые сертификаты" и нажимаем "Установить (Рекомендуется)"


Инсталляция КриптоПРО будет выполнена в фоновом режиме, после которой вы увидите предложение, о перезагрузке браузера, но я вам советую полностью перезагрузиться.


После перезагрузки подключайте ваш USB токен JaCarta. У меня подключение идет по сети, с устройства DIGI, через клиента Anywhere View. В клиенте Anywhere View, мой USB носитель Jacarta, успешно определен, но как Microsoft Usbccid (WUDF), а в идеале должен определиться как JaCarta Usbccid Smartcard, но нужно в любом случае проверить, так как все может работать и так.


Открыв утилиту "Единый клиент Jacarta PKI", подключенного токена обнаружено не было, значит, что-то с драйверами.


Откройте диспетчер устройств Windows, найдите пункт "Считыватели устройств смарт-карт (Smart card readers)" щелкните по Microsoft Usbccid (WUDF) и выберите пункт "Свойства". Перейдите на вкладку "Драйвера" и нажмите удалить (Uninstall)


Согласитесь с удалением драйвера Microsoft Usbccid (WUDF).


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


После перезагрузки системы, вы можете увидеть установку устройства и драйверов ARDS Jacarta.


Откройте диспетчер устройств, вы должны увидеть, что теперь ваше устройство определено, как JaCarta Usbccid Smartcar и если зайти в его свойства, то вы увидите, что смарт карта jacarta, теперь использует драйвер версии 6.1.7601 от ALADDIN R.D.ZAO, так и должно быть.


Если открыть единый клиент Jacarta, то вы увидите свою электронную подпись, это означает, что смарт карта нормально определилась.


Открываем CryptoPRO, и видим, что криптопро не видит сертификат в контейнере, хотя все драйвера определились как нужно. Есть еще одна фишка.


ОБЯЗАТЕЛЬНО снимите галку "Не использовать устаревшие cipher suite-ы" и перезагрузитесь.


После этих манипуляций у меня КриптоПРО увидел сертификат и смарт карта jacarta стала рабочей, можно подписывать документы.


Еще можете в устройствах и принтерах, увидеть ваше устройство JaCarta,


Если у вас как и у меня, токен jacarta установлен в виртуальной машине, то вам придется устанавливать сертификат, через console виртуальной машины, и так же дать на нее права ответственному человеку. Если это физический сервер, то там придется давать права на порт управления, в котором так же есть виртуальная консоль.

Не возможно подключиться к службе управления смарт-картами


  1. Не запущена служба смарт-карт на локальной машине. Архитектурой RDP-сессии, разработанной Microsoft, не предусмотрено использование ключевых носителей, подключенных к удалённому компьютеру, поэтому в RDP-сессии удалённый компьютер использует службу смарт-карт локального компьютера. Из этого следует что, запуска службы смарт-карт внутри RDP-сессии недостаточно для нормальной работы.
  2. Служба управления смарт-картами на локальном компьютере запущена, но недоступна для программы внутри RDP-сессии из-за настроек Windows и/или RDP-клиента.
  • Запустите службу смарт-карт на локальной машине, с которой вы инициируете сеанс удалённого доступа. Настройте её автоматический запуск при старте компьютера.
  • Разрешите использование локальных устройств и ресурсов во время удалённого сеанса (в частности, смарт-карт). Для этого, в диалоге "Подключение к удалённому рабочему столу" в параметрах выберите вкладку "Локальные ресурсы", далее в группе "Локальные устройства и ресурсы" нажмите кнопку "Подробнее…", а в открывшемся диалоге выберите пункт "Смарт-карты" и нажмите "ОК", затем "Подключить".


Вот такой вот был траблшутинг по настройке токена Jacarta, КриптоПРО на терминальном сервере, для подписи документов в ВТБ24 ДБО. Если есть замечания или поправки, то пишите их в комментариях.

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

Отладка и отслеживание проблем смарт-карт требуют различных средств и подходов. В следующих разделах указаны инструменты и подходы, которые можно использовать.

Certutil

Полное описание Certutil, включая примеры, которые показывают, как его использовать, см. в примере Certutil [W2012].

Сертификаты списка, доступные на смарт-карте

Чтобы перечислить сертификаты, доступные на смарт-карте, введите certutil -scinfo .

Ввод ПИН-кода не требуется для этой операции. Вы можете нажать ESC, если вам будет предложен ПИН-код.

Удаление сертификатов на смарт-карте

Каждый сертификат заключен в контейнер. При удалении сертификата на смарт-карте удаляется контейнер для сертификата.

Чтобы найти значение контейнера, введите certutil -scinfo .

Чтобы удалить контейнер, введите certutil-delkey-csp "Microsoft Base Smart Card Crypto Provider" < "ContainerValue". >

Отладка и отслеживание с помощью WPP

Включить трассировка

С помощью WPP используйте одну из следующих команд, чтобы включить отслеживание:

Начало журнала < FriendlyName > -ets-p < GUID > > - < Флаги > -ft 1 -rt -o .\ < LogFileName > **.etl-mode 0x00080000 **

Параметры можно использовать в следующей таблице.

Чтобы включить трассировку для службы SCardSvr:

logman start scardsvr -ets-p 0xffff -ft 1 -rt -o .\scardsvr.etl-mode 0x00080000

Чтобы включить трассировку для scfilter.sys:

Остановка трассировки

С помощью WPP используйте одну из следующих команд, чтобы остановить трассировку:

tracelog.exe -stop < FriendlyName>

logman -stop < FriendlyName > -ets

Примеры:

Чтобы остановить след:

tracelog.exe -stop scardsvr

logman -stop scardsvr -ets

Протокол Kerberos, KDC и отладка и отслеживание NTLM

Эти ресурсы можно использовать для устранения неполадок этих протоколов и KDC:

Windows (WDK)и средства отладки для Windows (WinDbg) . Вы можете использовать средство журнала трассировки в этом SDK для отладки сбоев проверки подлинности Kerberos.

Чтобы начать трассировку, можно использовать Tracelog . Различные компоненты используют различные GUID-интерфейсы управления, как это объясняется в этих примерах. Дополнительные сведения Tracelog см. в .

Протокол NTLM

Чтобы включить трассировку для проверки подлинности NTLM, запустите следующую команду в командной строке:

Чтобы остановить отслеживание для проверки подлинности NTLM, запустите эту команду:

Проверка подлинности Kerberos

Чтобы включить трассировку для проверки подлинности Kerberos, запустите эту команду:

Чтобы остановить отслеживание проверки подлинности Kerberos, запустите эту команду:

Чтобы включить трассировку для KDC, запустите следующую команду в командной строке:

Чтобы остановить отслеживание для KDC, запустите следующую команду в командной строке:

Чтобы остановить отслеживание с удаленного компьютера, запустите эту команду: logman.exe -s * < ComputerName > *.

Расположение по умолчанию для logman.exe % systemroot%system32\. Используйте параметр -s для поставки имени компьютера.

Настройка отслеживания с помощью реестра

Вы также можете настроить трассировку, редактировать значения реестра Kerberos, показанные в следующей таблице.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Имя значения: KerbDebugLevel
Тип значения: DWORD
Данные значения: c0000043

Если вы использовали, посмотрите следующий файл журнала в текущем Tracelog каталоге: kerb.etl/kdc.etl/ntlm.etl.

Если вы использовали параметры ключей реестра, показанные в предыдущей таблице, посмотрите на файлы журнала трассировки в следующих расположениях:

Служба смарт-карт

Служба диспетчера ресурсов смарт-карт работает в контексте локальной службы. Он реализуется в качестве общей службы процесса хост-службы (svchost).

Чтобы проверить, запущена ли служба Смарт-карты

В диалоговом окне Windows Диспетчер задач выберите вкладку Services.

Выберите столбец Name для сортировки списка в алфавитном порядке, а затем введите s.

В столбце Имя посмотрите на SCardSvr, а затем посмотрите в столбце Состояние, чтобы узнать, запущена или остановлена служба.

Перезапуск службы смарт-карт

Запустите в качестве администратора в командной подсказке.

Если появится диалоговое окно "Управление учетной записью пользователя", подтвердите, что отображаемая в нем акция является нужным, а затем выберите Да.

В командной подсказке введите net stop SCardSvr .

В командной подсказке введите net start SCardSvr .

Вы можете использовать следующую команду в командной подсказке, чтобы проверить, запущена ли служба: sc queryex scardsvr .

В следующем примере кода приводится пример вывода из этой команды:

Считыватели смарт-карт

Как и любое устройство, подключенное к компьютеру, диспетчер устройств можно использовать для просмотра свойств и начала процесса отлаговки.

Чтобы проверить, работает ли считыватель смарт-карт

Перейдите к компьютеру.

Щелкните правой кнопкой мыши Компьютер, а затем выберите Свойства.

В статье Задачивыберите диспетчер устройств.

В диспетчере устройств раздайте считывателисмарт-карт, выберите имя считывателей смарт-карт, которые необходимо проверить, а затем выберите Свойства.

Если считыватель смарт-карт не указан в диспетчере устройств, в меню Action выберите scan для изменения оборудования.

Диагностика CryptoAPI 2.0

Диагностика CryptoAPI 2.0 доступна в Windows версиях, которые поддерживают CryptoAPI 2.0 и могут помочь устранить проблемы с инфраструктурой ключей общего ключевых (PKI).

CryptoAPI 2.0 Диагностика регистрит события в журнале Windows событий. Журналы содержат подробные сведения о проверке цепочки сертификатов, операциях хранения сертификатов и проверке подписи. Эта информация упрощает определение причин проблем и сокращает время, необходимое для диагностики.

Дополнительные сведения о диагностике CryptoAPI 2.0 см. в Enterprise PKI.


Поскольку статья вводная и обзорная, то рассматриваться будет простейшая разновидность смарт-карт — SIM-карты, полагаю, что таких карт на планете сейчас больше всего.
По сегодняшним меркам стандарт SIM выглядит архаично, но зато он идеален для первого знакомства с миром смарт-карт, усвоение принципов, которые заложены в основу этого стандарта, облегчит дальнейшее погружение в тему.
Если Вы «карточник», то вряд ли узнаете для себя что-то новое, разве что какие-нибудь не очень понятные моменты разложатся по полочкам, а может быть Вы разложете по полочкам то, что недопонял автор (но, напоминаю, держимся в рамках SIM!).

Смарт-карта является программно-аппаратным комплексом, по сути — миниатюрным компьютером, в состав которого входят, как минимум:

  • процессор;
  • оперативная память;
  • подсистема хранения данных;
  • операционная система.

Часто, но не всегда, в состав карты входит и Java VM. ОС, как таковая, конечному пользователю не видна.

Роль API выполняет обмен данными с картой посредством т.н. APDU .
Множество различных APDU представляет из себя набор команд, каждая из которых имеет следующую структуру (согласно ISO7816-4):

Элемент Размер (байт) Описание
CLA 1 класс команды
INS 1 код инструкции
P1 1 параметр №1
P2 1 параметр №2
L 1 длина данных, передаваемых карте.
Data L данные

APDU принято записывать в виде набора шестнадцатиричных цифр, вот так:

A0 A4 00 00 02 3F00

Для GSM SIM-карт используется CLA = A0 .
Приведу несколько кодов инструкций:

Инструкция Описание
A4 SELECT FILE
B0 READ BINARY
B2 READ RECORD
C0 GET RESPONSE
20 VERIFY CODE
D6 UPDATE BINARY
DC UPDATE RECORD

В ответ на APDU карта всегда возвращает, как минимум, 2 байта, т.н. Status Word (SW),
причем первый и второй байт соответственно принято называть SW1 и SW2. По SW можно определить статус исполнения команды, причем SW1 обычно предоставляет основную информацию, а SW2 — дополнительную. В случае SIM-карт об успехе выполнения будут говорить статусы 90 00 и 9F xx (здесь xx — шестнадцатиричная цифра, длина дополнительной информации, о которой ниже).
Помимо SW карта может вернуть и данные. Есть также команды, после выполнения которых возможно получить дополнительную информацию.
Для этого предназначена команда:

Для того, чтобы воспользоваться «услугами» этой инструкции, нужно иметь в виду, что она должна быть вызвана сразу после той команды, результат которой требуется запросить. При вызове любой инструкции, отличной от GET RESPONSE, контекст предыдущей команды будет утрачен.
Если какая-либо инструкция позволяет использовать после своего вызова GET RESPONSE, то она в SW2 возвращает объем данных в байтах, который вернет команда GET RESPONSE.
Одним из ярких применений GET RESPONSE является ее использование после команды SELECT — оно дает возможность получить полезную информацию о выбранном объекте файловой системы.



Кстати, самое время вспомнить о файловой системе карты. Система эта является иерархической, существует корневая папка (Master File, MF), обычные папки (Dedicated File, DF) и, собственно, файлы (Elementary File, EF). Каждый объект файловой системы имеет идентификатор (File ID, FID), который, в простейшем случае, состоит из четырех шестнадцатиричных цифр и который заменяет ему имя. Например, MF всегда имеет идентификатор 3F00 . В рамках каждого карточного стандарта существует свой перечень зарезервированных файловых идентификаторов, например, файл адресной книги на SIM имеет идентификатор 6F3A, а файл для хранения SMS — 6F3C. У стандартных файлов также имеются и произносимые имена (исключительно для удобства человека, API их не использует), для указанных выше файлов они, такие:
EF ADN для 6F3A ;
EF SMS для 6F3С .

Типы файлов

API смарт-карт предусматривает манипуляции с тремя типами файлов:

аналог обычного бинарного файла любой файловой системы.
Средства работы с такими файлами — пара команд READ BINARY/UPDATE BINARY .

Файл, состоящий из фиксированного количества записей, причем все записи одинаковой длины, длина записи задается при создании файла.
Записей не может быть больше 255 шт., каждая запись не может быть длинее 255 байт.
Средство работы — пара READ RECORD/UPDATE RECORD.
Можно использовать как абсолютную (по номеру записи) так и относительную адресацию (следующая/предыдущая, но без цикличности).
Пример использования — записная книжка на SIM-карте.

В целом — то же, что и Linear Fixed, но со следующей дополнительной функциональностью:
При чтении: замкнутость — при использовании относительной адресации, переходя с последней на следующую запись попадаем на первую, переходя с первой на предыдущую запись, попадаем на последнюю.
При записи: допустима только относительная адресация с обращением только к предыдущей записи. Есть даже специальная команда, только для циклических файлов, которая обновляет самую старую запись файла (после этого она становится самой новой) — INCREASE.
Первая запись всегда хранит самые новые данные, а последняя — самые старые.
Пример использования — список ранее набранных номеров. Вообще, файлы данного типа используются гораздо реже, чем файлы других типов.

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

  2. REHABILITATE — возвращает инвалидированный ранее файл в обычное состояние, при этом возможные ограничения, наложенные инвалидацией, снимаются.
  1. Access Condition (AC) — состояние карты, в пределах текущей сесии, при котором для определенного файла возможен определенный вид операции.
  2. Условия доступа, самым известным из которых является предъявление PIN-кода.

Конечно же, то, что я здесь описал, не является реальной файловой системой — как правило, за этой абстракцией, на уровне ОС, спрятана знакомая всем FAT.

В завершение я просто обязан привести пример использования данного API в реальной жизни.
Думаю, многие уже догадались (или знали?), что самым известным и массовым устройством, использующим этот API постоянно и интенсивно, является обыкновенный мобильный терминал.

PS:
В следующей статье планирую рассказать о том, как можно применить полученные сейчас знания, работая с картой программно.


Невозможно создать файл, если этот файл уже существует

Что вызывает ошибку «Невозможно создать файл, если этот файл уже существует»?

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

Как оказалось, эта конкретная проблема возникает из-за распространенного сбоя Windows, который, как подтверждается, происходит в Windows 8.1 и Windows 10. Microsoft уже выпустила исправление для этого конкретного сбоя, но некоторые пользователи утверждают, что «Невозможно создать файл, если этот файл уже существует»Ошибка по-прежнему возникает даже после того, как они установили исправление, предоставленное Microsoft.

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

Способ 1. Установка обновления KB4057144 (только для Windows 10)

Если вы столкнулись с проблемой в Windows 10, у вас есть одно простое исправление, которое позволит вам решить проблему с минимальными трудностями. Microsoft решила эту конкретную проблему с помощью исправления, выпущенного на Январь 2018.

Если вы постоянно обновляете систему, скорее всего, она уже установлена. Но если вы этого не сделаете, следуйте инструкциям ниже, чтобы убедиться, что KB4057144 Обновление установлено на вашем компьютере:

  1. Нажмите Windows ключ + R открыть Бежать диалоговое окно. Затем введите мс-настройка: WindowsUpdate и нажмите Enter, чтобы открыть Центр обновления Windows вкладка внутри настройки приложение.
    Диалог запуска: ms-settings: windowsupdate
  2. На экране Центра обновления Windows нажмите Проверьте наличие обновлений и установите все доступные ожидающие обновления.
    Установка каждого ожидающего обновления Windows
  3. Когда появится запрос на перезагрузку, нажмите Перезагрузить сейчас кнопка, чтобы позволить вашей ОС установить обновление. После завершения следующего запуска вернитесь к тому же экрану и продолжайте установку ожидающего обновления, пока ничего не останется.
    Перезагрузите компьютер, чтобы ОС установила обновления
  4. После установки каждого ожидающего обновления перейдите к Сервисы еще раз, чтобы увидеть, сможете ли вы изменить статус смарт-карты (SCardSvr) оказание услуг.

Если у вас все еще возникает та же проблема, или вы столкнулись с проблемой в другой операционной системе, перейдите к следующему способу ниже.

Способ 2: изменение статуса смарт-карты (SCardSvr) через Regedit

Вот что вам нужно сделать:


  1. Нажмите Windows ключ + R открыть диалоговое окно «Выполнить». Затем введите «Regedit» и нажмите Войти открыть Редактор реестра. Если предложено UAC (контроль учетных записей пользователей) щелчок да предоставить административные привилегии.
    Доступ к редактору реестра с помощью поля «Выполнить»
  2. В редакторе реестра перейдите к следующему разделу реестра:


Переход к разделу реестра SCardSvr

Замечания: Вы можете перейти к этому месту вручную или вставить адрес прямо в панель навигации.

Если у вас все еще возникает та же проблема или вы ищете другой подход, перейдите к следующему способу ниже.

Способ 3: изменение состояния смарт-карты (SCardSvr) через командную строку

Если два вышеуказанных метода не позволили вам разрешитьНевозможно создать файл, если этот файл уже существуетОшибка, давайте посмотрим, будет ли серия команд CMD. В некоторых случаях эта проблема подтверждается путем изменения типа запуска смарт-карты (SCardSvr) сервис прямо из окна командной строки с повышенными правами.

Вот что вам нужно сделать:


  1. Нажмите Windows ключ + R открыть Бежать диалоговое окно. Затем введите «ЦМД» и нажмите Ctrl + Shift + Enter открыть командную строку с повышенными правами. По подсказке UAC (контроль учетных записей пользователей), щелчок да предоставить административные привилегии.
    Запуск CMD в качестве администратора
  2. Когда вы попадете в командную строку с повышенными правами, введите следующую команду, чтобы остановить службу смарт-карт:
  3. Как только служба была остановлена, используйте одну из следующих команд, чтобы изменить Тип запуска услуги в состояние, которое вы хотите:
  4. Однажды Тип запуска был изменен, введите следующую команду для перезапуска службы смарт-карт:

Читайте также: