Выбранный режим работы не поддерживает импорт закрытого ключа jacarta

Закрытый ключ *.pfx - Добрый день! При импорте закрытого ключа(выдан сертифицированным УЦ) выходит ошибка: "Произошла внутренняя ошибка. Либо профиль пользователя недоступен, либо для импорта закрытого ключа...
article placeholder

Offline

BlackIronPiton

 


#1
Оставлено
:

17 мая 2016 г. 9:33:39(UTC)

BlackIronPiton

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

Группы: Участники

Зарегистрирован: 17.05.2016(UTC)
Сообщений: 7
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз

Добрый день!

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

В чем может быть причина?
Пробовали на разных компьютерах результат один.
Если нужна доп. информация готов предоставить.

Информация о системе:
Win7 x64
КриптоПро CSP Версия ядра СКЗИ:3.6.5365 КС1
Версия продукта 3.6.7777


Вверх


Offline

Андрей Писарев

 


#2
Оставлено
:

17 мая 2016 г. 9:55:43(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,792
Мужчина
Российская Федерация

Сказал «Спасибо»: 452 раз
Поблагодарили: 1848 раз в 1431 постах

Здравствуйте.

С помощью какой версии КриптоПРО CSP делался pfx?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

BlackIronPiton

 


#3
Оставлено
:

17 мая 2016 г. 10:02:51(UTC)

BlackIronPiton

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

Группы: Участники

Зарегистрирован: 17.05.2016(UTC)
Сообщений: 7
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз

Версия аналогичная:
КриптоПро CSP Версия ядра СКЗИ:3.6.5365 КС1
Версия продукта 3.6.7777


Вверх


Offline

Андрей Писарев

 


#4
Оставлено
:

18 мая 2016 г. 12:33:40(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,792
Мужчина
Российская Федерация

Сказал «Спасибо»: 452 раз
Поблагодарили: 1848 раз в 1431 постах

Здравствуйте.

Попробуйте на проблемном ПК получить тестовый сертификат
(через Internet Explorer https://cryptopro.ru/certsrv/certrqma.asp ),
сделать экспорт в pfx, а затем из него же импортировать.

Есть ошибка?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

BlackIronPiton

 


#5
Оставлено
:

18 мая 2016 г. 15:05:59(UTC)

BlackIronPiton

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

Группы: Участники

Зарегистрирован: 17.05.2016(UTC)
Сообщений: 7
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз

Добрый день!

pfx сформирован, при импорте предлагает выбрать носитель/реестр, шаг на котором выходила ошибка проходит успешно.
Что это значит, в какую сторону копать?

Отредактировано пользователем 18 мая 2016 г. 15:38:02(UTC)
 | Причина: Уточнение


Вверх


Offline

Андрей Писарев

 


#6
Оставлено
:

19 мая 2016 г. 0:23:52(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,792
Мужчина
Российская Федерация

Сказал «Спасибо»: 452 раз
Поблагодарили: 1848 раз в 1431 постах

Автор: BlackIronPiton Перейти к цитате

Версия аналогичная:
КриптоПро CSP Версия ядра СКЗИ:3.6.5365 КС1
Версия продукта 3.6.7777

Сверьте информацию еще раз.
PFX делался аналогично, как на тесте выше?
Попробуйте еще раз сделать pfx, перенести и импортировать.

Еще есть вариант использовать:
http://www.cryptopro.ru/downloads

Цитата:

Утилита для импорта транспортных контейнеров PKCS#12 в контейнеры КриптоПро CSP

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

BlackIronPiton

 


#7
Оставлено
:

19 мая 2016 г. 10:58:12(UTC)

BlackIronPiton

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

Группы: Участники

Зарегистрирован: 17.05.2016(UTC)
Сообщений: 7
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз

Да сверил еще раз версии CSP — одинаковые.

Вопрос решен.
1. У УЦ был запрошен закрытый ключ в формате *.key
2. Далее по инструкции скопирован в реестр:
http://www.kontur-extern.ru/support/faq/34/61
3. Через оснастку «Сертификаты» экспортирован в *.pfx
Новый закрытый ключ (*.pfx) импортируется без проблем, проверено на нескольких ПК.

Спасибо!


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Добрый день, исправил код текущей ветки OpenSC для импорта закрытых ключей GOST R3410 в рутокен, изменения вносились согласно документации на pkcs11 (openoasis) и rutoken.

Вызываю так:
./src/tools/pkcs11-tool —module /usr/lib/librtpkcs11ecp.so -l -E gost -y privkey -w key.der —slot 0 —id 65536
Пробовал указывать другие механизмы, эффект одинаковый:
error: PKCS11 function C_CreateObject failed: rv = CKR_TEMPLATE_INCONSISTENT (0xd1)

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

diff --git a/src/tools/pkcs11-tool.c b/src/tools/pkcs11-tool.c
index 8aa1cff..d4fe730 100644
--- a/src/tools/pkcs11-tool.c
+++ b/src/tools/pkcs11-tool.c
@@ -50,6 +50,7 @@
 #include <openssl/asn1t.h>
 #include <openssl/rsa.h>
 #include <openssl/pem.h>
+#include <openssl/engine.h>
 #if OPENSSL_VERSION_NUMBER >= 0x00908000L && !defined(OPENSSL_NO_EC) && !defined(OPENSSL_NO_ECDSA)
 #include <openssl/ec.h>
 #include <openssl/ecdsa.h>
@@ -179,6 +180,7 @@ static const struct option options[] = {
     { "usage-sign",        0, NULL,        OPT_KEY_USAGE_SIGN },
     { "usage-decrypt",    0, NULL,        OPT_KEY_USAGE_DECRYPT },
     { "usage-derive",    0, NULL,        OPT_KEY_USAGE_DERIVE },
+    { "engine",        1, NULL,        'E' },
     { "write-object",    1, NULL,        'w' },
     { "read-object",    0, NULL,        'r' },
     { "delete-object",    0, NULL,        'b' },
@@ -244,6 +246,7 @@ static const char *option_help[] = {
     "Specify 'sign' key usage flag (sets SIGN in privkey, sets VERIFY in pubkey)",
     "Specify 'decrypt' key usage flag (RSA only, set DECRYPT privkey, ENCRYPT in pubkey)",
     "Specify 'derive' key usage flag (EC only)",
+    "Set SSL engine provider",
     "Write an object (key, cert, data) to the card",
     "Get object's CKA_VALUE attribute (use with --type)",
     "Delete an object (use with --type cert/data/privkey/pubkey/secrkey)",
@@ -291,6 +294,7 @@ static int        opt_slot_index_set = 0;
 static CK_MECHANISM_TYPE opt_mechanism = 0;
 static int        opt_mechanism_used = 0;
 static const char *    opt_file_to_write = NULL;
+static const char *    opt_engine = NULL;
 static const char *    opt_object_class_str = NULL;
 static CK_OBJECT_CLASS    opt_object_class = -1;
 static CK_BYTE        opt_object_id[100], new_object_id[100];
@@ -529,6 +533,7 @@ int main(int argc, char * argv[])
 #endif
     int need_session = 0;
     int opt_login = 0;
+    int do_set_engine = 0;
     int do_init_token = 0;
     int do_init_pin = 0;
     int do_change_pin = 0;
@@ -536,7 +541,7 @@ int main(int argc, char * argv[])
     int action_count = 0;
     int do_generate_random = 0;
     CK_RV rv;
-
+    ENGINE *eng = NULL;
 #ifdef _WIN32
     char expanded_val[PATH_MAX];
     DWORD expanded_len;
@@ -547,24 +552,8 @@ int main(int argc, char * argv[])
         util_fatal("Cannot set FMODE to O_BINARY");
 #endif
 
-#ifdef ENABLE_OPENSSL
-#if (OPENSSL_VERSION_NUMBER >= 0x00907000L && OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
-    OPENSSL_config(NULL);
-#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
-    OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS
-        | OPENSSL_INIT_ADD_ALL_CIPHERS
-        | OPENSSL_INIT_ADD_ALL_DIGESTS
-        | OPENSSL_INIT_LOAD_CONFIG,
-        NULL);
-#else
-    /* OpenSSL magic */
-    OpenSSL_add_all_algorithms();
-    OPENSSL_malloc_init();
-#endif
-#endif
     while (1) {
-        c = getopt_long(argc, argv, "ILMOTa:bd:e:hi:klm:o:p:scvf:ty:w:z:r",
+        c = getopt_long(argc, argv, "ILMOTa:bd:e:hi:klm:o:p:scvf:ty:w:z:rE:",
                         options, &long_optind);
         if (c == -1)
             break;
@@ -612,6 +601,12 @@ int main(int argc, char * argv[])
             opt_file_to_write = optarg;
             action_count++;
             break;
+        case 'E':
+            need_session |= NEED_SESSION_RW;
+            do_set_engine = 1;
+            opt_engine = optarg;
+            action_count++;
+            break;
         case 'r':
             need_session |= NEED_SESSION_RO;
             do_read_object = 1;
@@ -841,6 +836,26 @@ int main(int argc, char * argv[])
             util_print_usage_and_die(app_name, options, option_help, NULL);
         }
     }
+#ifdef ENABLE_OPENSSL
+#if (OPENSSL_VERSION_NUMBER >= 0x00907000L && OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
+    OPENSSL_config(NULL);
+#endif
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
+    OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS
+        | OPENSSL_INIT_ADD_ALL_CIPHERS
+        | OPENSSL_INIT_ADD_ALL_DIGESTS
+        | OPENSSL_INIT_LOAD_CONFIG,
+        NULL);
+#else
+    /* OpenSSL magic */
+        if(do_set_engine) {
+          eng = ENGINE_by_id(opt_engine);
+          ENGINE_set_default(eng, ENGINE_METHOD_ALL);
+        }
+    OpenSSL_add_all_algorithms();
+    OPENSSL_malloc_init();
+#endif
+#endif
     if (optind < argc) {
         util_fatal("invalid option(s) given");
     }
@@ -2415,6 +2430,8 @@ parse_ec_pkey(EVP_PKEY *pkey, int private, struct gostkey_info *gost)
    public keys (-type pubkey) and data objects (-type data). */
 static int write_object(CK_SESSION_HANDLE session)
 {
+        const CK_BYTE GOST_HASH_PARAMSET_OID[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1e, 0x01};
+        CK_BYTE hash_paramset_encoded_oid[9];
     CK_BBOOL _true = TRUE;
     CK_BBOOL _false = FALSE;
     unsigned char contents[MAX_OBJECT_SIZE + 1];
@@ -2634,12 +2651,16 @@ static int write_object(CK_SESSION_HANDLE session)
             n_privkey_attr++;
         }
         else if (pk_type == NID_id_GostR3410_2001)   {
-            type = CKK_GOSTR3410;
+printf("Write gost keyn");
+                        memcpy(hash_paramset_encoded_oid, GOST_HASH_PARAMSET_OID, sizeof(GOST_HASH_PARAMSET_OID));
 
+            type = CKK_GOSTR3410;
             FILL_ATTR(privkey_templ[n_privkey_attr], CKA_KEY_TYPE, &type, sizeof(type));
             n_privkey_attr++;
             FILL_ATTR(privkey_templ[n_privkey_attr], CKA_GOSTR3410_PARAMS, gost.param_oid.value, gost.param_oid.len);
             n_privkey_attr++;
+                        FILL_ATTR(privkey_templ[n_privkey_attr], CKA_GOSTR3411_PARAMS, hash_paramset_encoded_oid, sizeof(hash_paramset_encoded_oid));
+            n_privkey_attr++;
             FILL_ATTR(privkey_templ[n_privkey_attr], CKA_VALUE, gost.private.value, gost.private.len);
             /* CKA_VALUE of the GOST key has to be in the little endian order */
             rv = sc_mem_reverse(privkey_templ[n_privkey_attr].pValue, privkey_templ[n_privkey_attr].ulValueLen);
@@ -2735,6 +2756,7 @@ static int write_object(CK_SESSION_HANDLE session)
             n_pubkey_attr++;
         }
         else if (pk_type == NID_id_GostR3410_2001) {
+printf("Write gost public key");
             type = CKK_GOSTR3410;
 
             FILL_ATTR(pubkey_templ[n_pubkey_attr], CKA_KEY_TYPE, &type, sizeof(type));
@@ -2824,6 +2846,7 @@ static int write_object(CK_SESSION_HANDLE session)
     }
 
     if (n_privkey_attr) {
+                printf("Create object with gost keyn");
         rv = p11->C_CreateObject(session, privkey_templ, n_privkey_attr, &privkey_obj);
         if (rv != CKR_OK)
             p11_fatal("C_CreateObject", rv);

Обновлено 13.01.2019

ключ JaCartaДобрый день! Уважаемые читатели и подписчики IT блога Pyatilistnik.org. Последние два дня у меня была интересная задача по поиску решения на вот такую ситуацию, есть физический или виртуальный сервер, на нем установлена наверняка многим известная КриптоПРО. На сервер подключен USB ключ JaCarta, который используется для подписи документов для ВТБ24 ДБО. Локально на Windows 10 все работает, а вот на серверной платформе Windows Server 2016 и 2012 R2, Криптопро не видит ключ 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). Вот так вот выглядит ситуация, когда утилита КриптоПРО не видит сертификат в контейнере.

JaCarta ключ не видится в криптопро на терминальном сервере-03

Как видно в утилите 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 ключ?

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

Перед установкой любого программного обеспечения работающего с USB носителями на которых находятся сертификаты и закрытые ключи. Нужно ОБЯЗАТЕЛЬНО отключить токен, если воткнут локально, то отключаем его, если по сети, разрываем сессию

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

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

Единый Клиент JaCarta — это специальная утилита от компании «Аладдин», для правильной работы с токенами JaCarta. Загрузить последнюю версию, данного программного продукта, вы можете с официального сайта, или у меня с облака, если вдруг, не получиться с сайта производителя.

jacarta драйвер

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

Установка единого клиента JaCard-01

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

Установка единого клиента JaCard-02

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

Установка единого клиента JaCard-03

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

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

Выборочная установка драйверов JaCarta

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

Установка единого клиента JaCard-04

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

Установка единого клиента JaCard-05

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

Установка единого клиента JaCard-06

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

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

https://www.cryptopro.ru/downloads

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

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

Установка КриптоПРо для Jacarta-01

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

Установка КриптоПРо для Jacarta-02

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

JaCarta ключ не видится в криптопро на терминальном сервере-01

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

JaCarta ключ не видится в криптопро на терминальном сервере-02

Microsoft Usbccid (WUDF) — это стандартный драйвер Microsoft, который по умолчанию устанавливается на различные токены, и бывает, что все работает, но не всегда. Операционная система Windows по умолчанию, ставит их в виду своей архитектуры и настройки, мне вот лично в данный момент такое не нужно. Что делаем, нам нужно удалить драйвера Microsoft Usbccid (WUDF) и установить драйвера для носителя Jacarta.

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

JaCarta ключ не видится в криптопро на терминальном сервере-04

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

JaCarta ключ не видится в криптопро на терминальном сервере-05

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

JaCarta ключ не видится в криптопро на терминальном сервере-06

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

JaCarta ключ не видится в криптопро на терминальномс сервере-07

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

JaCarta ключ не видится в криптопро на терминальномс сервере-09

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

JaCarta ключ не видится в криптопро на терминальномс сервере-11

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

  1. В RDP сессии вы не увидите свой токен, только локально, уж такая работа токена, либо я не нашел как это поправить. Вы можете попробовать выполнить рекомендации по устранению ошибки «Не возможно подключиться к службе управления смарт-картами».
  2. Нужно снять одну галку в CryptoPRO

JaCarta ключ не видится в криптопро на терминальном сервере-13

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

JaCarta ключ не видится в криптопро на терминальномс сервере-12

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

JaCarta ключ не видится в криптопро на терминальном сервере-08

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

Jacarta

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

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

Когда вы установили все драйвера для токенов Jacarta, вы можете увидеть при подключении по RDP и открытии утилиты «Единый клиент Jacarta PKI» вот такое сообщение с ошибкой:

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

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

  1. Не запущена служба смарт-карт на локальной машине. Архитектурой RDP-сессии, разработанной Microsoft, не предусмотрено использование ключевых носителей, подключенных к удалённому компьютеру, поэтому в RDP-сессии удалённый компьютер использует службу смарт-карт локального компьютера. Из этого следует что, запуска службы смарт-карт внутри RDP-сессии недостаточно для нормальной работы.
  2. Служба управления смарт-картами на локальном компьютере запущена, но недоступна для программы внутри RDP-сессии из-за настроек Windows и/или RDP-клиента.

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

  • Запустите службу смарт-карт на локальной машине, с которой вы инициируете сеанс удалённого доступа. Настройте её автоматический запуск при старте компьютера.
  • Разрешите использование локальных устройств и ресурсов во время удалённого сеанса (в частности, смарт-карт). Для этого, в диалоге «Подключение к удалённому рабочему столу» в параметрах выберите вкладку «Локальные ресурсы», далее в группе «Локальные устройства и ресурсы» нажмите кнопку «Подробнее…», а в открывшемся диалоге выберите пункт «Смарт-карты» и нажмите «ОК», затем «Подключить».

токен jacarta

  • Убедитесь в сохранности настроек RDP-подключения. По умолчанию они сохраняются в файле Default.rdp в каталоге «Мои Документы» Проследите, чтобы в данном файле присутствовала строчка «redirectsmartcards:i:1».
  • Убедитесь в том, что на удалённом компьютере, к которому вы осуществляете RDP-подключение, не активирована групповая политика
    [Computer ConfigurationAdministrative TemplatesWindows ComponentsTerminal ServicesClientServer data redirectionDo not allow smart card device redirection] -[Конфигурация компьютераадминистративные шаблоныкомпоненты windowsслужбы удалённых рабочих столовузел сеансов удалённых рабочих столовперенаправление устройств и ресурсовНе разрешать перенаправление устройства чтения смарт-карт]. Если она включена (Enabled), то отключите её, и перегрузите компьютер.
  • Если у вас установлена Windows 7 SP1 или Windows 2008 R2 SP1 и вы используете RDC 8.1 для соединения с компьютерами под управлением Windows 8 и выше, то вам необходимо установить обновление для операционной системы https://support.microsoft.com/en-us/kb/2913751

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

Автор ПО и методики — Сергей Солдатов (https://www.securitylab.ru/blog/persona … 155893.php)

1. Установить Smartcard Sniffer
Если включён Secure Boot (версии Windows 8 и выше), то инфраструктура AppInit_DLLs выключена.
Я делал на Windows 7 x64.
1.1. Скачать https://code.google.com/p/smartcard-sniffer/
1.2. Библиотеку необходимой разрядности SmartcardSniffer.dll положить в папку
1.3. Прописать в реестре загрузку SmartcardSniffer.dll и значения переменных

Код: Выделить всё

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows]
"AppInit_DLLs"="C:\1\SmartcardSniffer.dll"
"LoadAppInit_DLLs"=dword:00000001
"RequireSignedAppInit_DLLs"=dword:00000000

2. Получить дамп диалога приложения с токеном
Для этого выполнить любую операцию, требующую передачу ключа в приложение.
Например, выполнить КриптоПро CSP -> Сервис -> Протестировать.
После этого в папке, где лежит SmartcardSniffer.dll, появляется файл rundll32.exe.txt, в котором сохранён дамп диалога приложения с токеном.
2.1. Разбить дамп на отдельные файлы диалога
2.1.1. Скачать writeBinaryAPDU.pl — https://github.com/votadlos/Antitoken/b … aryAPDU.pl
2.1.2. Скачать и установить Perl — https://strawberryperl.com/download/5.3 … -64bit.msi
2.1.3. Запустить

В результате rundll32.exe.txt будет разобран на бинарные файлы вида «001_out(4)39_6A_42_32», где
001 — идентификатор последовательности запрос-ответ;
out — направление передачи: out — из токена в приложение, in — от приложения в токен;
(4) — количество переданных/полученных байтов;
39_6A_42_32 — первые 4 байта.

3. Собрать контейнер

3.1. primary.key — размер 36 байт, начинается с 30_22_04_20
Ищем файлы вида №_out(36)30_22_04_20.
У меня таких было 2 штуки, размером 68 байт и 80 байт, начало одинаковое, в конце нули, взял один и обрезал до 36 байт.

3.2. masks.key — размер 56 байт, начинается с 30_36_04_20
Ищем файлы вида №_out(56)30_36_04_20.
У меня таких было 2 штуки, размером по 64 байта, одинаковые, в конце нули, взял один и обрезал до 56 байт.

3.3. header.key — самый большой файл.
Находим файлы с самым большим объёмом, плюс берём кусок до и кусок после.
У меня он передавался два раза, состоял из 16 частей — 10 байт (379_out(10)30_82_0B_26)+ 14 * 200 байт + 48 байт (394_out(48)1F_E6_2E_0D), всего 2 858 байт. Соединил все части командой

Код: Выделить всё

copy /B 379_out(10)30_82_0B_26 + ... + 394_out(48)1F_E6_2E_0D header.key

Либо положить все эти файлы в отдельную директорию и

3.4. name.key — просто взял от другого контейнера

Затем положил на флэшку, с помощью CertFix (версии 1.1.27.3154) сделал экспортируемым и скопировал в реестр.

вопросы

Из нашей статьи вы узнаете:

ЭЦП — довольно сложный цифровой продукт, обращение с которым в определенных ситуациях может потребовать некоторых навыков и знаний. Например, в ходе установки сертификатов ЭП посредством «КриптоПро» после выбора соответствующего ключевого контейнера нередко выдаются неприятные сообщения об ошибке вследствие отсутствия открытого шифровочного ключа, который необходим для обеспечения информационной безопасности, без чего система не будет принимать ЭЦП.

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

Что может послужить причиной такой ошибки

ошибка в контейнере закрытого ключа и причины её появления

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

  • установка сертификата впервые;
  • экспортирование данных на внешний носитель;
  • попытка просмотра ключей в контейнерах ключей;
  • загрузка информации на компьютер извне.

В целях устранения ошибки обычно бывает достаточно произвести корректную ручную переустановку сертификата.

Решение ошибки: отсутствие электронного сертификата в контейнере закрытого ключа

Для начала запускаем «КриптоПро» нажатием кнопки «Пуск». Затем выбираем «Настройку», в возникающем на мониторе окне заходим в опцию панели управления, далее «сервис – установить личный сертификат».

программа криптопро предложит указать место хранение сертификата

Далее, через кнопку «обзор» указываем путь, где сохранен открытый ключ – файл с расширением *.cert или *.crt

Необходимо выбрать файл и открыть его с помощью криптопро

Жмём «Далее», в мастере установки сертификата мы увидим путь, который указывали до нашего сертификата.

Убедившись, что криптопро верно распознало путь установки сертификата, подтверждаем установку

Нам отображается информация, содержащаяся в открытом ключе на пользователя, жмём «далее»

Перед импортом сертификата надо проверить содержащуюся в нем информацию

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

  • «найти контейнер автоматически
  • вручную через «обзор»

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

Мы рекомендуем использовать функцию КриптоПро «найти контейнер автоматически» или указать его вручную через «обзор»

Самый простой вариант выбрать автоматический поиск, затем после «обнаружения» необходимого контейнера, мы увидим заполненную строчку с его именем и после жмём «Далее»

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

Личный сертификат пользователя всегда устанавливается в хранилище «Личное», можно выбрать как вручную, так и КриптоПро может сделать это за вас по умолчанию, затем подтверждаем установку цепочки сертификатов и жмём «Далее»

Важно! Не забудьте поставить галку в настройках КриптоПро «установить сертификат (цепочку сертификатов) в контейнер>

В случае успешной установки КриптоПро выдаст окно с информацией об окончании процедуры и жмём «Готово»

Можно завершать установку сетификата

Затем появится окно с подтверждением данной операции, жмём «ДА»

Криптопро предложит перезаписать сертификат – соглашаемся

В следующем окне увидим информацию о том, что процесс окончен успешно. Сертификат установлен в контейнер закрытого ключа.

Готово. Сертификат установлен

Особенности версий КриптоПро

С января 2019 года квалифицированные сертификаты могут выпускаться только по ГОСТ 2012, выпуск по другому ГОСТу прекращен. Мы об этом писали ранее в статье. Важно помнить, что версии криптопро на ГОСТ 2012 работают только с версии 4.0 и выше. Все старые версии КриптоПро, для нормальной работы, потребуется обновить или заменить на актуальную. Сделать это нужно не позднее 31 декабря 2019 года.

Экспорт закрытого ключа

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

Откройте Крипто-Про CSP. Перейдите во вкладку «Сервис» и нажмите кнопку «Просмотреть сертификаты в контейнере» (Рис. 1).

CSP 2 1
Рис. 1. Крипто-Про CSP. Сервис

В открывшемся окне укажите имя ключевого контейнера, нажав «Обзор» (Рис. 2).

export sert 1
Рис. 1. Крипто-Про CSP. Сервис

В открывшемся окне укажите имя ключевого контейнера, нажав «Обзор» (Рис. 2).

Рис. 2. Сертификаты в контейнере закрытого ключа

Выберите ключевой контейнер пользователя, затем нажмите «Ок» (Рис. 3).

export sert 2
Рис. 3. Выбор ключевого контейнера

Нажмите «Далее» (Рис. 4).

export sert 3
Рис. 3. Выбор ключевого контейнера

Нажмите «Далее» (Рис. 4).

Рис. 4. Контейнер закрытого ключа

Далее нажмите кнопку «Свойства» (Рис. 5).

CSP 2 5
Рис. 5. Сертификат для просмотра

В открывшемся окне перейдите во вкладку «Состав» и нажмите кнопку «Копировать в файл» (Рис. 6).

CSP 2 6
Рис. 5. Сертификат для просмотра

В открывшемся окне перейдите во вкладку «Состав» и нажмите кнопку «Копировать в файл» (Рис. 6).

Рис. 6. Состав сертификата

Откроется мастер экспорта сертификатов. Нажмите «Далее» (Рис. 7).

CSP 2 7
Рис. 7. Мастер экспорта сертификатов

Далее отметьте «Да, экспортировать закрытый ключ» (1) и нажмите «Далее» (2) (Рис. 8).

export sert 4
Рис. 7. Мастер экспорта сертификатов

Далее отметьте «Да, экспортировать закрытый ключ» (1) и нажмите «Далее» (2) (Рис. 8).

Рис. 8. Экспортирование закрытого ключа

Отметьте следующие пункты: «Файл обмена личной информацией – PKCS #12», «Включить по возможности все сертификаты в путь сертификации» и «Экспортировать все расширенные свойства» (1), затем нажмите кнопку «Далее» (2) (Рис. 9).

export sert 5
Рис. 9. Экспортированный сертификат

Укажите пароль и подтверждение пароля (1), затем нажмите кнопку «Далее» (2) (Рис. 10).

export sert 6
Рис. 9. Экспортированный сертификат

Укажите пароль и подтверждение пароля (1), затем нажмите кнопку «Далее» (2) (Рис. 10).

Рис. 10. Безопасность

Далее укажите имя файла, используя «Обзор» (1), затем нажмите кнопку «Далее» (2) (Рис. 11).

export sert 7
Рис. 11. Имя экспортируемого файла

Далее нажмите «Готово» (Рис. 12).

export sert 8
Рис. 11. Имя экспортируемого файла

Далее нажмите «Готово» (Рис. 12).

Рис. 12. Экспортирование закрытого ключа

Система сообщит о чтении ключевой информации, нажмите кнопку «Ок» (Рис. 13).

export sert 9
Рис. 13. Чтение ключевой информации

Откроется окно с информацией об успешном экспорте. Нажмите «Ок» (Рис. 14).

CSP 2 12 1
Рис. 13. Чтение ключевой информации

Откроется окно с информацией об успешном экспорте. Нажмите «Ок» (Рис. 14).

Рис. 14. Завершение экспорта

Импорт закрытого ключа

Для установки закрытой части ключа откройте файл, сохранённый ранее (Рис. 15).

import sert 1
Рис. 15. Файл, сохранённый ранее

Откроется «Мастер импорта сертификатов», нажмите кнопку «Далее» (Рис. 16).

import sert 2
Рис. 15. Файл, сохранённый ранее

Откроется «Мастер импорта сертификатов», нажмите кнопку «Далее» (Рис. 16).

Рис. 16. Мастер импорта сертификатов

Укажите файл, который нужно импортировать, используя кнопку «Обзор», затем нажмите «Далее» (Рис. 17).

import sert 3
Рис. 17. Импортируемый файл

Далее введите пароль (1), отметьте пункт «Пометить этот ключ как экспортируемый, что позволит сохранять резервную копию ключа и перемещать его.» (2), затем нажмите кнопку «Далее» (Рис. 18).

import sert 4
Рис. 17. Импортируемый файл

Далее введите пароль (1), отметьте пункт «Пометить этот ключ как экспортируемый, что позволит сохранять резервную копию ключа и перемещать его.» (2), затем нажмите кнопку «Далее» (Рис. 18).

Рис. 18 Защита с помощью закрытого ключа

Отметьте пункт «Поместить все сертификаты в следующее хранилище» (1), нажмите кнопку «Обзор» (2), в открывшемся окне отметьте «Личное» (3) и нажмите «Ок» (4). В окне мастера настроек нажмите «Далее» (5) (Рис. 19).

import sert 5
Рис. 19. Выбор хранилища сертификата

Нажмите «Готово» (Рис. 20).

import sert 6
Рис. 19. Выбор хранилища сертификата

Нажмите «Готово» (Рис. 20).

Рис. 20. Завершение мастера импорта сертификатов

В открывшемся окне КриптоПро CSP выберите носитель, на который будет импортирован ключ, затем нажмите «Ок» (Рис. 21).

import sert 11
Рис. 21. Выбор носителя

Далее укажите новый пароль и его подтверждение (Рис. 22).

import sert 7
Рис. 21. Выбор носителя

Далее укажите новый пароль и его подтверждение (Рис. 22).

Рис. 22. Указание пароля

Система сообщит о чтении ключевой информации, нажмите кнопку «Ок» (Рис. 23).

import sert 8
Рис. 23. Чтение ключевой информации

Далее введите пароль (Рис. 24).

import sert 9
Рис. 23. Чтение ключевой информации

Далее введите пароль (Рис. 24).

Рис. 24. Пароль для контейнера

Далее нажмите «Ок» (Рис. 25).

import sert 8
Рис. 25. Чтение ключевой информации

Импорт успешно будет выполнен (Рис. 26).

import sert 10
Рис. 25. Чтение ключевой информации

Импорт успешно будет выполнен (Рис. 26).

Рис. 26. Заверщение импорта

Далее выполните установку личного сертификата по инструкции: /ru-ru/support/kb/333#1.


Offline

sonnerad

 


#1
Оставлено
:

3 марта 2022 г. 19:14:13(UTC)

sonnerad

Статус: Участник

Группы: Участники

Зарегистрирован: 08.02.2020(UTC)
Сообщений: 13
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз

Подскажите, пожалуйста, в чем может быть проблема?
В ФНС записали эцп на Jacarta, вставляю карту в ноут, приложение джакарты показывает, что там записан сертификат, а криптопро ничего там не видит.icon file Snimok ehkrana 2022-03-03 v 19.08.35.png (659kb) загружен 2 раз(а).


Вверх


Offline

Александр Лавник

 


#2
Оставлено
:

3 марта 2022 г. 19:38:49(UTC)

Александр Лавник

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

Группы: Участники

Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,216
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 725 раз в 677 постах

Автор: sonnerad Перейти к цитате

Подскажите, пожалуйста, в чем может быть проблема?
В ФНС записали эцп на Jacarta, вставляю карту в ноут, приложение джакарты показывает, что там записан сертификат, а криптопро ничего там не видит.icon file Snimok ehkrana 2022-03-03 v 19.08.35.png (659kb) загружен 2 раз(а).

Здравствуйте.

Попробуйте выполнить следующее:

КриптоПро CSP
Оборудование
Настроить считыватели
Добавить
Считыватель смарт-карт PKCS#11

https://www.cryptopro.ru…cs11_jacarta_esm_win.jpg

Техническую поддержку оказываем тут
Наша база знаний


Вверх


Offline

sonnerad

 


#3
Оставлено
:

3 марта 2022 г. 20:06:32(UTC)

sonnerad

Статус: Участник

Группы: Участники

Зарегистрирован: 08.02.2020(UTC)
Сообщений: 13
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз

Заработало, спасибо!
Мне надо этот сертификат с ключами перенести в облако, в инструкции написано, что в свойствах должно стоять Экспорт ключа-разрешен, а у меня запрещен.
Подскажите, пожалуйста, как можно разрешить экспорт ключа?


Вверх


Offline

Александр Лавник

 


#4
Оставлено
:

3 марта 2022 г. 22:46:02(UTC)

Александр Лавник

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

Группы: Участники

Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,216
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 725 раз в 677 постах

Автор: sonnerad Перейти к цитате

Заработало, спасибо!
Мне надо этот сертификат с ключами перенести в облако, в инструкции написано, что в свойствах должно стоять Экспорт ключа-разрешен, а у меня запрещен.
Подскажите, пожалуйста, как можно разрешить экспорт ключа?

К сожалению, никак.

Этот ключ никогда не покидает токен.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Понравилась статья? Поделить с друзьями:

А вот еще кое-что интересное для вас:

  • Для чего нужен дубликаты госномера авто. 10 причин сделать себе его
  • Разновидности похоронных бюро и сферы их деятельности
  • Как быстро изучить английский язык? Плюсы и минусы онлайн школы по изучения языков
  • Эффективное создание текста вакансии: ключевые шаги и рекомендации
  • Размещение серверов в дата-центрах: преимущества и недостатки