Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 4.0
 » 
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)


Offline

danila24

 


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

9 сентября 2019 г. 8:54:24(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

Здравствуйте.
На сервере Windows Server 2016 стоит КриптоПро CSP 4.0.9680, Версия ядра СКЗИ: 4.0.9006 КС1. Лицензия серверная.
Также на этом сервере установлен сервер 1С 8.3.14.1630. Сервер 1С запускается под учетной записью.
Проблема в следующем: при попытке подписания документов в 1С на клиенте ошибок не возникает, всё подписывается и проверяется, но при попытке выполнения такой операции на сервере возникает ошибка:
Ошибка при получении свойства сертификата (0x00000000).


Вверх


Offline

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

 


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

9 сентября 2019 г. 11:05:57(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 464 раз
Поблагодарили: 1961 раз в 1516 постах

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

Расскажите, где как устанавливали сертификат, под какой учётной записью,
какой код\вызов функции даёт ошибку.

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


Вверх

WWW


Offline

danila24

 


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

9 сентября 2019 г. 11:19:13(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

В общем сами разобрались


Вверх


Offline

R.Salo

 


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

29 октября 2019 г. 10:05:13(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться.


Вверх


Offline

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

 


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

29 октября 2019 г. 10:16:09(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 464 раз
Поблагодарили: 1961 раз в 1516 постах

Автор: R.Salo Перейти к цитате

Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться.

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

Вопросы те же. Тестирование сертификата проходит без проблем через Сервис\Протестировать\По сертификату?
В каком хранилище сертификат “Локальный компьютер”?

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


Вверх

WWW


Offline

R.Salo

 


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

29 октября 2019 г. 10:56:15(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

тестирование проходит, хранилище – текущий пользователь-личные-реестр


Вверх


Offline

R.Salo

 


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

1 ноября 2019 г. 2:45:47(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

Добрый день, нет решения проблемы?


Вверх


Offline

two_oceans

 


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

1 ноября 2019 г. 5:02:06(UTC)

two_oceans

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

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 392 раз в 366 постах

Добрый день. Меня как-то смущает что код 0 в первом сообщении, у Вас такой же код? Многое зависит от конкретной схемы работы 1С. На всякий случай, кратко пробегусь по основным моментам, может у Вас тоже идеи возникнут что не так.

Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных.

1С запускается под другим пользователем, не под тем от имени которого тестируете? Например, у нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре – они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе – видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера.

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


Вверх


Offline

danila24

 


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

5 ноября 2019 г. 6:27:08(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про.
Также на сервере должен быть установлен закрытый ключ как для локальной машины, так и для пользователя, под которым работает служба 1с сервера.
В менеджере сертификатов у закрытого ключа для локальной машины, надо дать доступ пользователю, под которым будет выполняться подписание. В нашем случае мы сделали, чтобы сервер 1С работал под доменным пользователем, которому и дали прав на работу с закрытым ключом локальной машины.
После этого всё заработало.

Отредактировано пользователем 5 ноября 2019 г. 6:28:20(UTC)
 | Причина: Не указана


Вверх

thanks 1 пользователь поблагодарил danila24 за этот пост.

R.Salo

оставлено 07.11.2019(UTC)


Offline

R.Salo

 


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

7 ноября 2019 г. 8:58:45(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

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

Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про.
Также на сервере должен быть установлен закрытый ключ как для локальной машины, так и для пользователя, под которым работает служба 1с сервера.
В менеджере сертификатов у закрытого ключа для локальной машины, надо дать доступ пользователю, под которым будет выполняться подписание. В нашем случае мы сделали, чтобы сервер 1С работал под доменным пользователем, которому и дали прав на работу с закрытым ключом локальной машины.
После этого всё заработало.

Огромное СПАСИБО! Ваши советы помогли)))


Вверх

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

Guest (2)

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 4.0
 » 
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)

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

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

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

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

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

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

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

Здравствуйте, прошу помочь в следующем вопросе:

Есть простенький код, который подписывает строку:

Перем МК;

Сертификат = "";
ТипыХранилищ = Новый Массив;
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
МК = Новый МенеджерКриптографии("", "", 78);

Хранилище = МК.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
СертификатыХранилища = Хранилище.ПолучитьВсе();

Сертификат = СертификатыХранилища[0];

Стр = ПолучитьДвоичныеДанныеИзСтроки("123456");

Результат = МК.Подписать(Стр, Сертификат);


На компьютере установлен криптопровайдер VipNet CSP

Валится ошибка: “Ошибка при получении свойства сертификата (0x00000000)”

Проверил все, что мог:
1. сертификат действительный и связан с закрытым ключом
(скрин приложил)

2. Другими программами этот сертификат можно использовать (для подписания, например)

3. Может, думаю, тип криптопровайдера указал неверно (78) – нет, правильно, если указать другой тип – то ошибка именно в типе криптопровайдера.

Посмотрел, что содержит переменная сертификат в отладчике (скрин) – сертификат есть, вроде бы все нормально:

В интернете накопал только информацию, что сертификат не связан с закрытым ключом, а у меня он связан.

Коллеги, куда смотреть, куда копнуть?

Разгребая свои очередные заметки по тому, каким образом была решена та или иная проблема я наткнулся на, казалось бы, простую, на первый взгляд, проблему – ошибку “Ошибка при получении свойства сертификата (0x00000000)”, которая генерировалась при попытке установки нового сертификата в 1С. Но я потратил почти день на поиски решения… Наверное, в силу небольшого опыта работы с 1С. Мне редко приходится заниматься 1С, но иногда какие-то задачи на меня прилетаю.

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

Описание проблемы

При проверки настроек сертификата электронной подписи в 1С геренируется ошибка “Ошибка при получении свойства сертификата (0x00000000)”:

Окружение

Версия платформы: 1С:Предприятие 8.3 (8.3.17.1851)/

Конфигурация 1С: Управление торговлей, редакция 11 (11.4.13.282) – серверная версия.

Версия Крипто Про: 5.0.12000 KC1

Операционная системы: Windows Server 2008 R2 Standard x64.

ЭЦП расположена на токене Rutoken Lite.

Какие шаги не помогли решить проблемы

Итак, какие шаги я выполнял для устранения проблемы, но они не помогли решить проблему:

1. В Крипто Про я протестировал контейнер закрытого ключа. Проблем не обнаружено. Закрытый ключ присутствует на токене.

2. В какой-то момент генерировалась ошибка “Сертификат не имеет связи с закрытым ключом”, но я выполнил шаги из этого руководства для устранения этой ошибки.

3. Также я установил сертификат в личный контейнер пользователя.

4. Еще пробовал установить сертификат в личный контейнер пользователя вот таким способом.

5. Проверил наличие закрытого ключа в личном контейнере пользователя.

6. Пометил сертификат на удаление, удилил его и попробовал добавить сертификат заново.

7. Перезагружал сервер после выполнения шагов выше (несчетное количество раз).

8. Обновил версию Крипто Про до 5.0.12000 KC1.

Иногда менялась последовательность и комбинация действий. Это из того, что вспомнилось. Возможно делал что-то еще, но не столь важное.

Решение

Как видно из предыдущего раздела я выполнил довольно много действий, но тут я приведу то последнее действие, которое в итоге помогло мне решить проблему. Да, скорее всего, какие-то из действий предыдущего раздела были необходимо и без них решение ниже не помогло бы. Но я не могу сказать какие именно.

Как в итоге я смог устранить эту ошибку:

1. Пометил сертификат на удаление и удалил через удаление помеченных на удаление объектов (ток его удалил, другое ничего не удалял).

2. Очистил кэш 1С для пользователя.

3. Повторно импортировал сертификат.

Да, все таки думаю, что это было из-за кэша 1С. Где-то осела какая-то не актуальная информация о сертификате.

Дата обновления: 28.06.2022

Номер карточки: SD0012282

Ошибка при получении свойства сертификата.png

Ошибка при получении свойства сертификата (0x00000000) — это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.

Чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие связи закрытого ключа с открытой частью сертификата, требуется  узнать режим запуска 1С:

  • Если база файловая и запускается через тонкий клиент на том же компьютере, то наличие связи надо проверять для пользователя ОС, под которым запускается сеанс 1С на этом компьютере (без повышения прав, т.е. без «запуск от имени администратора»).
  • Если файловая ИБ запускается через браузер, т.е. используется web-сервер (в том числе на одном и том же компьютере) и пользователь планирует работать с локальной подписью (т.е. сертификат будет доступен только одному пользователю и только на одном компьютере) — то наличие связи надо проверять на этом компьютере для пользователя, под которым запущен браузер, без повышения прав. В этом случае ошибки в проверках на сервере проблемой не являются.
  • Если файловая ИБ запускается через браузер и пользователь планирует использовать серверную подпись (т.е. сертификат будет доступен разным пользователям с разных компьютеров) — то наличие связи надо проверять для пользователя ОС, под которым запущен web-сервер, без повышения прав (и на том же компьютере, где запущен web-сервер). В этом случае ошибки в проверках на клиенте проблемой не являются.
  • Если база клиент-серверная и проверяется подпись на сервере, то наличие связи надо проверять для пользователя ОС, под которым запущен сервер 1С без повышения прав (если используется web-сервер, то все равно проверки выполнять для пользователя ОС, под которым запущен сервер 1С). В этом случае ошибка в проверке подписи на клиенте проблемой не является.
  • Если база клиент-серверная и проверяется подпись на клиенте, то наличие связи надо проверять для пользователя ОС, под которым запускается сеанс 1С на машине-клиенте без повышения прав. В этом случае ошибка в проверке подписи на сервере проблемой не является.

Необходимо выяснить в каком из вышеперечисленных режимов происходит запуск 1С при возникновении ошибки, а также в какой проверке возникает ошибка (проверка на сервере или на клиенте). Все дальнейшие рекомендации выполнять на нужной машине и в сеансе нужного пользователя ОС без повышения прав (т.е. без «запуск от имени администратора»).

1. Проверить, что сертификат установлен в Личный список сертификатов пользователя ОС, а также наличие связи с закрытым ключом:

1.1. Под пользователем ОС (см. выше, как определить) запустить консоль сертификатов — certmgr.msc

Ошибка при получении свойства сертификата 2.png

1.2. В консоли развернуть папку «Личное» и перейти в «Сертификаты».

Ошибка при получении свойства сертификата 3.jpg

1.3. Открыть проблемный сертификат.

Ошибка при получении свойства сертификата 4.jpg

 В сведениях о сертификате не должно быть красного креста или восклицательного знака.

Ошибка при получении свойства сертификата 5.jpg

  • Восклицательный знак обозначает, что цепочка до корневого сертификата не построена.
  • Красный крест обозначает, что сертификат истек или не выстроена цепочка сертификатов до корневого.

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

В нижней части должен отображаться значок ключа с надписью: «Есть закрытый ключ для этого сертификата», если данный значок отсутствует, то это означает, что закрытого ключа нет (как это исправить — см. п. 2).

2. Проверка связи и перепривязка средствами криптопровайдера:

2.1. В сеансе пользователя ОС (без повышения прав) переустановить сертификат в Личное хранилище сертификатов с привязкой к закрытому ключу (Инструкция по переустановке http://1c-edo.ru/handbook/28/4008/).

2.2. Если сертификат установлен в Личном хранилище сертификатов администратора ОС (т.е. в реестре администратора), тогда нужно его (вместе с закрытым ключом) экспортировать в файл средствами Windows (в файл pfx). А затем импортировать в сеансе пользователя ОС, из под которого выполняется запуск 1С без повышения прав. Для этого необходимо в сертификате перейти на вкладку «Состав» и нажать «Копировать в файл…»

Ошибка при получении свойства сертификата 6.png

В мастере экспорта сертификатов необходимо выбрать «Да, экспортировать закрытый ключ» и нажать «Далее».

Ошибка при получении свойства сертификата 7.jpg

На следующем шаге автоматически определится предпочтительный формат экспортируемого файла (.PFX). Необходимо нажать «Далее».

Ошибка при получении свойства сертификата 8.jpg

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

Ошибка при получении свойства сертификата 9.jpg

На следующем шаге мастера экспорта сертификатов требуется указать имя файла и доступную директорию компьютера.

Ошибка при получении свойства сертификата 10.jpg

И завершить экспорт. 

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

Ошибка при получении свойства сертификата 11.jpg

В поле «Расположение хранилища» выбрать «Текущий пользователь» и нажать «Далее».

Ошибка при получении свойства сертификата 12.jpg

Импортируемый файл определится автоматически.

Ошибка при получении свойства сертификата 13.jpg

На следующем шаге мастера необходимо ввести пароль, который был указан при экспорте файла, и нажать «Далее».

Ошибка при получении свойства сертификата 14.jpg

После чего завершить импорт сертификата, выбрав «Автоматически выбрать хранилище на основе типа сертификата».

Ошибка при получении свойства сертификата 15.jpg

И выполнить рекомендации из статьи  http://1c-edo.ru/handbook/28/4008/

Если криптосредство (КриптоПро, VipNet) не запускается без повышения прав в сеансе пользователя ОС, из-под которого выполняется запуск приложений 1С (запуск сервера 1С или web-сервера для файловой ИБ), рекомендуется выполнить переустановку криптосредства, чтобы оно было доступно в сеансе пользователя ОС, из-под которого выполняется запуск приложений 1С (и/или сервера/web-сервера).

Также вам может быть интересно:

Настройка клиент-серверного подписания электронных документов

Сертификат не найден на компьютере

Настройка криптопровайдера ViPNet CSP для работы с 1С-ЭДО

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 4.0
 » 
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)


Offline

danila24

 


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

9 сентября 2019 г. 8:54:24(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

Здравствуйте.
На сервере Windows Server 2016 стоит КриптоПро CSP 4.0.9680, Версия ядра СКЗИ: 4.0.9006 КС1. Лицензия серверная.
Также на этом сервере установлен сервер 1С 8.3.14.1630. Сервер 1С запускается под учетной записью.
Проблема в следующем: при попытке подписания документов в 1С на клиенте ошибок не возникает, всё подписывается и проверяется, но при попытке выполнения такой операции на сервере возникает ошибка:
Ошибка при получении свойства сертификата (0x00000000).


Вверх


Offline

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

 


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

9 сентября 2019 г. 11:05:57(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

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

Расскажите, где как устанавливали сертификат, под какой учётной записью,
какой кодвызов функции даёт ошибку.

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


Вверх

WWW


Offline

danila24

 


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

9 сентября 2019 г. 11:19:13(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

В общем сами разобрались


Вверх


Offline

R.Salo

 


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

29 октября 2019 г. 10:05:13(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться.


Вверх

Offline

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

 


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

29 октября 2019 г. 10:16:09(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Автор: R.Salo Перейти к цитате

Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться.

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

Вопросы те же. Тестирование сертификата проходит без проблем через СервисПротестироватьПо сертификату?
В каком хранилище сертификат «Локальный компьютер»?

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


Вверх

WWW


Offline

R.Salo

 


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

29 октября 2019 г. 10:56:15(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

тестирование проходит, хранилище — текущий пользователь-личные-реестр


Вверх

Offline

R.Salo

 


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

1 ноября 2019 г. 2:45:47(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

Добрый день, нет решения проблемы?


Вверх

Offline

two_oceans

 


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

1 ноября 2019 г. 5:02:06(UTC)

two_oceans

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

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 388 раз в 363 постах

Добрый день. Меня как-то смущает что код 0 в первом сообщении, у Вас такой же код? Многое зависит от конкретной схемы работы 1С. На всякий случай, кратко пробегусь по основным моментам, может у Вас тоже идеи возникнут что не так.

Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных.

1С запускается под другим пользователем, не под тем от имени которого тестируете? Например, у нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре — они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе — видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера.

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


Вверх

Offline

danila24

 


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

5 ноября 2019 г. 6:27:08(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про.
Также на сервере должен быть установлен закрытый ключ как для локальной машины, так и для пользователя, под которым работает служба 1с сервера.
В менеджере сертификатов у закрытого ключа для локальной машины, надо дать доступ пользователю, под которым будет выполняться подписание. В нашем случае мы сделали, чтобы сервер 1С работал под доменным пользователем, которому и дали прав на работу с закрытым ключом локальной машины.
После этого всё заработало.

Отредактировано пользователем 5 ноября 2019 г. 6:28:20(UTC)
 | Причина: Не указана


Вверх

thanks 1 пользователь поблагодарил danila24 за этот пост.

R.Salo

оставлено 07.11.2019(UTC)


Offline

R.Salo

 


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

7 ноября 2019 г. 8:58:45(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

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

Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про.
Также на сервере должен быть установлен закрытый ключ как для локальной машины, так и для пользователя, под которым работает служба 1с сервера.
В менеджере сертификатов у закрытого ключа для локальной машины, надо дать доступ пользователю, под которым будет выполняться подписание. В нашем случае мы сделали, чтобы сервер 1С работал под доменным пользователем, которому и дали прав на работу с закрытым ключом локальной машины.
После этого всё заработало.

Огромное СПАСИБО! Ваши советы помогли)))


Вверх

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

Guest

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 4.0
 » 
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)

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

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

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

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

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

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

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

Здравствуйте, прошу помочь в следующем вопросе:

Есть простенький код, который подписывает строку:

Перем МК;

Сертификат = "";
ТипыХранилищ = Новый Массив;
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
МК = Новый МенеджерКриптографии("", "", 78);

Хранилище = МК.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
СертификатыХранилища = Хранилище.ПолучитьВсе();

Сертификат = СертификатыХранилища[0];

Стр = ПолучитьДвоичныеДанныеИзСтроки("123456");

Результат = МК.Подписать(Стр, Сертификат);


На компьютере установлен криптопровайдер VipNet CSP

Валится ошибка: «Ошибка при получении свойства сертификата (0x00000000)»

Проверил все, что мог:
1. сертификат действительный и связан с закрытым ключом
(скрин приложил)

2. Другими программами этот сертификат можно использовать (для подписания, например)

3. Может, думаю, тип криптопровайдера указал неверно (78) — нет, правильно, если указать другой тип — то ошибка именно в типе криптопровайдера.

Посмотрел, что содержит переменная сертификат в отладчике (скрин) — сертификат есть, вроде бы все нормально:

В интернете накопал только информацию, что сертификат не связан с закрытым ключом, а у меня он связан.

Коллеги, куда смотреть, куда копнуть?

Здравствуйте, прошу помочь в следующем вопросе:

Есть простенький код, который подписывает строку:

Перем МК;

Сертификат = "";
ТипыХранилищ = Новый Массив;
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
МК = Новый МенеджерКриптографии("", "", 78);

Хранилище = МК.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
СертификатыХранилища = Хранилище.ПолучитьВсе();

Сертификат = СертификатыХранилища[0];

Стр = ПолучитьДвоичныеДанныеИзСтроки("123456");

Результат = МК.Подписать(Стр, Сертификат);


На компьютере установлен криптопровайдер VipNet CSP

Валится ошибка: «Ошибка при получении свойства сертификата (0x00000000)»

Проверил все, что мог:
1. сертификат действительный и связан с закрытым ключом
(скрин приложил)

2. Другими программами этот сертификат можно использовать (для подписания, например)

3. Может, думаю, тип криптопровайдера указал неверно (78) — нет, правильно, если указать другой тип — то ошибка именно в типе криптопровайдера.

Посмотрел, что содержит переменная сертификат в отладчике (скрин) — сертификат есть, вроде бы все нормально:

В интернете накопал только информацию, что сертификат не связан с закрытым ключом, а у меня он связан.

Коллеги, куда смотреть, куда копнуть?

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 4.0
 » 
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)


Offline

danila24

 


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

9 сентября 2019 г. 8:54:24(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

Здравствуйте.
На сервере Windows Server 2016 стоит КриптоПро CSP 4.0.9680, Версия ядра СКЗИ: 4.0.9006 КС1. Лицензия серверная.
Также на этом сервере установлен сервер 1С 8.3.14.1630. Сервер 1С запускается под учетной записью.
Проблема в следующем: при попытке подписания документов в 1С на клиенте ошибок не возникает, всё подписывается и проверяется, но при попытке выполнения такой операции на сервере возникает ошибка:
Ошибка при получении свойства сертификата (0x00000000).


Вверх

Offline

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

 


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

9 сентября 2019 г. 11:05:57(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

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

Расскажите, где как устанавливали сертификат, под какой учётной записью,
какой кодвызов функции даёт ошибку.

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


Вверх

WWW


Offline

danila24

 


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

9 сентября 2019 г. 11:19:13(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах


Вверх

Offline

R.Salo

 


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

29 октября 2019 г. 10:05:13(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться.


Вверх

Offline

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

 


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

29 октября 2019 г. 10:16:09(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Автор: R.Salo Перейти к цитате

Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться.

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

Вопросы те же. Тестирование сертификата проходит без проблем через СервисПротестироватьПо сертификату?
В каком хранилище сертификат «Локальный компьютер»?

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


Вверх

WWW


Offline

R.Salo

 


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

29 октября 2019 г. 10:56:15(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

тестирование проходит, хранилище — текущий пользователь-личные-реестр


Вверх

Offline

R.Salo

 


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

1 ноября 2019 г. 2:45:47(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

Добрый день, нет решения проблемы?


Вверх

Offline

two_oceans

 


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

1 ноября 2019 г. 5:02:06(UTC)

two_oceans

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

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 388 раз в 363 постах

Добрый день. Меня как-то смущает что код 0 в первом сообщении, у Вас такой же код? Многое зависит от конкретной схемы работы 1С. На всякий случай, кратко пробегусь по основным моментам, может у Вас тоже идеи возникнут что не так.

Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных.

1С запускается под другим пользователем, не под тем от имени которого тестируете? Например, у нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре — они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе — видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера.

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


Вверх

Offline

danila24

 


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

5 ноября 2019 г. 6:27:08(UTC)

danila24

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

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

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

Поблагодарили: 1 раз в 1 постах

Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про.
Также на сервере должен быть установлен закрытый ключ как для локальной машины, так и для пользователя, под которым работает служба 1с сервера.
В менеджере сертификатов у закрытого ключа для локальной машины, надо дать доступ пользователю, под которым будет выполняться подписание. В нашем случае мы сделали, чтобы сервер 1С работал под доменным пользователем, которому и дали прав на работу с закрытым ключом локальной машины.
После этого всё заработало.

Отредактировано пользователем 5 ноября 2019 г. 6:28:20(UTC)
 | Причина: Не указана


Вверх

thanks 1 пользователь поблагодарил danila24 за этот пост.

R.Salo

оставлено 07.11.2019(UTC)


Offline

R.Salo

 


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

7 ноября 2019 г. 8:58:45(UTC)

R.Salo

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

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

Зарегистрирован: 29.10.2019(UTC)
Сообщений: 4
Российская Федерация
Откуда: Благовещенск

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

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

Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про.
Также на сервере должен быть установлен закрытый ключ как для локальной машины, так и для пользователя, под которым работает служба 1с сервера.
В менеджере сертификатов у закрытого ключа для локальной машины, надо дать доступ пользователю, под которым будет выполняться подписание. В нашем случае мы сделали, чтобы сервер 1С работал под доменным пользователем, которому и дали прав на работу с закрытым ключом локальной машины.
После этого всё заработало.

Огромное СПАСИБО! Ваши советы помогли)))


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

Guest

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 4.0
 » 
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)

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

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

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

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

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

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

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

Разгребая свои очередные заметки по тому, каким образом была решена та или иная проблема я наткнулся на, казалось бы, простую, на первый взгляд, проблему – ошибку “Ошибка при получении свойства сертификата (0x00000000)”, которая генерировалась при попытке установки нового сертификата в 1С. Но я потратил почти день на поиски решения… Наверное, в силу небольшого опыта работы с 1С. Мне редко приходится заниматься 1С, но иногда какие-то задачи на меня прилетаю.

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

Описание проблемы

При проверки настроек сертификата электронной подписи в 1С геренируется ошибка “Ошибка при получении свойства сертификата (0x00000000)”:

Окружение

Версия платформы: 1С:Предприятие 8.3 (8.3.17.1851)

Конфигурация 1С: Управление торговлей, редакция 11 (11.4.13.282

Версия Крипто Про: 5.0.12000 KC1

Операциолнная системы: Windows Server 2008 R2 Standard x64.

ЭЦП расположена на токене Rutoken Lite.

Какие шаги не помогли решить проблемы

Итак, какие шаги я выполнял для устранения проблемы, но они не помогли решить проблему:

1. В Крипто Про я протестировал контейнер закрытого ключа. Проблем не обнаружено. Закрытый ключ присутствует на токене.

2. В какой-то момент генерировалась ошибка “Сертификат не имеет связи с закрытым ключом”, но я выполнил шаги из этого руководства для устранения этой ошибки.

3. Также я установил сертификат в личный контейнер пользователя.

4. Еще пробовал установить сертификат в личный контейнер пользователя вот таким способом.

5. Проверил наличие закрытого ключа в личном контейнере пользователя.

6. Пометил сертификат на удаление, удилил его и попробовал добавить сертификат заново.

7. Перезагружал сервер после выполнения шагов выше (несчетное количество раз).

8. Обновил версию Крипто Про до 5.0.12000 KC1.

Иногда менялась последовательность и комбинация действий. Это из того, что вспомнилось. Возможно делал что-то еще, но не столь важное.

Решение

Как видно из предыдущего раздела я выполнил довольно много действий, но тут я приведу то последнее действие, которое в итоге помогло мне решить проблему. Да, скорее всего, какие-то из действий предыдущего раздела были необходимо и без них решение ниже не помогло бы. Но я не могу сказать какие именно.

Как в итоге я смог устранить эту ошибку:

1. Пометил сертификат на удаление и удалил через удаление помеченных на удаление объектов (ток его удалил, другое ничего не удалял).

2. Очистил кэш 1С для пользователя.

3. Повторно импортировал сертификат.

Да, все таки думаю, что это было из-за кэша 1С. Где-то осела какая-то не актуальная информация о сертификате.

Результаты поиска по запросу:

0x00000000

  • Настройка КриптоПРО для работы с 1С-ЭДО в Linux

    Для работы на Linux рекомендуется использовать последнюю сертифицированную версию КриптоПро CSP.

    Также для работы через браузер потребуется установка расширения для работы с файлами, а также крипторасширение  – подробнее см. п. 3 данной статьи.

    Для работы с системой маркировки…

  • Настройка КриптоПРО для работы с 1С-ЭДО в macOS

    Для работы на macOS рекомендуется использовать последнюю сертифицированную версию КриптоПро CSP.

    Для работы в тонком клиенте необходимо использовать версию платформы 8.3.15.2107, 8.3.16.1791, 8.3.17.1823, 8.3.18.1128 или выше.

    Также для работы через браузер потребуется установка ра…

  • Ошибка при получении свойства сертификата (0x00000000)

    Ошибка при получении свойства сертификата (0x00000000) — это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.

    Чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие…

При возникновении перечисленных далее ошибок воспользуйтесь стандартными действиями для решения проблем с криптографией. Ошибки могут возникать при подписании и расшифровке (отправке отчета, обмене, отправке заявления, обновлении статуса заявления и т.д.):

  • набор ключей не определен;
  • неправильный открытый ключ поставщика;
  • не найден сертификат и открытый ключ для расшифровки;
  • не найден сертификат руководителя в системном хранилище сертификатов;
  • не удалось расшифровать файл обновлений;
  • ошибка инициализации криптопровайдера;
  • плохие данные;
  • ошибка при получении свойств сертификата. Не удалось выполнить подписание сертификатом, Федеральная налоговая служба по причине Ошибка при получении свойства сертификата (0x0000000);

  • ошибка интерфейса модуля криптографии. Отсутствует набор ключей. Не удалось выполнить подписание сертификатом по причине: Ошибка интерфейса модуля криптографии. Отсутствует набор ключей;

  • ошибка при получении контекста модуля криптографии. Не удалось выполнить подписание сертификатом , Федеральная налоговая служба по причине Ошибка при получении контекста модуля криптографии;

  • модуль криптографии не поддерживает алгоритмов подписи. Не удалось выполнить подписание сертификатом по причине: Модуль криптографии не поддерживает алгоритмов подписи. Не удалось подписать файл по причине…;

  • не удалось подписать файл по причине: Неправильный зарегистрированный набор ключей. Неправильный зарегистрированный набор ключей. Ошибка подписания документа: Обращение налогоплательщика, связанное с циклом обмена По причине: Не удалось подписать файл по причине…;

  • не удалось подписать файл по причине: Ошибка исполнения функции. Не удалось подписать файл по причине: Ошибка исполнения функции. Ошибка подписания документа: Запрос на информационное обслуживание налогоплательщика, связанное с циклом обмена.

cmex

01.06.20 — 11:16

Добрый день!

Для использования всех методов необходимо иметь УКЭП. Кто нибудь из 1С уже работал по API? Как получить тестовую УКЭП, как использовать уже имеющуюся УКЭП директора организации на Сервере, чтобы автоматом можно было подписывать? Кто сталкивался? Просветите, как процесс устроен? Слышал, про тестовый УЦ, где выдают УКЭП, но не понял как с этим работать. В общем, буду признателен за любую информацию

cmex

1 — 01.06.20 — 14:21

up

ChMikle

2 — 01.06.20 — 14:25

cmex

3 — 01.06.20 — 17:08

(2) Спасибо

timurhv

4 — 01.06.20 — 17:13

Тестовая УКЭП должна быть на имя директора (если стоит KIS, то его лучше закрыть, т.к. из-за сертификата тестового сервера не пускает дальше регистрировать):

https://ismp.wiki/index.php?title=Софт

Если выходит ошибка регистрации на тестовой площадке — писать в тех.поддержку ЧЗ.

lodger

5 — 01.06.20 — 18:46

(0)

1) есть боевой и есть тестовый контур API

2) ключ можно использовать один и тот же.

3) нет нужды использовать ключ на сервере. достаточно сотворить токен авторизации на клиенте и отдать его на сервер.

4) у токена есть время жизни, 10 часов.

cmex

6 — 02.06.20 — 13:29

(5) удалось получить сертификат в Тестовом подчиненном УЦ КриптоПро. Установил сертификат под своей учеткой в ОС

Далее пишу код

ИнтеграционныйСтенд = «int01.gismt.crpt.tech/api/v3/true-api»;

Соединение = Новый HTTPСоединение(ИнтеграционныйСтенд,,,,,, Новый ЗащищенноеСоединениеOpenSSL);

HTTPЗапрос = Новый HTTPЗапрос(«/auth/key»);

HTTPОтвет = Соединение.ВызватьHTTPМетод(«GET», HTTPЗапрос);    

СтрокаJSON = HTTPОтвет.ПолучитьТелоКакСтроку();

ЧтениеJSON = Новый ЧтениеJSON;

ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

Структура = ПрочитатьJSON(ЧтениеJSON);

ЧтениеJSON.Закрыть();

МенеджерКриптографии = Новый МенеджерКриптографии(«Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider», «», 75);

Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов();

СертификатыХранилища = Хранилище.ПолучитьВсе();

Сертификат = СертификатыХранилища[0];    

ДД = ПолучитьДвоичныеДанныеИзСтроки(Структура.data);

Результат = МенеджерКриптографии.Подписать(ДД, Сертификат);

ЗаписьJSON = Новый ЗаписьJSON;

ЗаписьJSON.УстановитьСтроку();

ЗаписатьJSON(ЗаписьJSON, Структура);

СтрокаJSON = ЗаписьJSON.Закрыть();

Заголовки = Новый Соответствие;    

Заголовки.Вставить(«Content-Type», «application/json; charset=utf-8»);

Заголовки.Вставить(«cache-control», «no-cache»);

HTTPЗапрос = Новый HTTPЗапрос(«/auth/simpleSignIn», Заголовки);    

HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);

Попытка

    HTTPОтвет = Соединение.ВызватьHTTPМетод(«POST», HTTPЗапрос);    

Исключение

    Сообщить(ОписаниеОшибки());

КонецПопытки;

Вываливается ошибка «Ошибка при получении свойства сертификата (0x00000000)»

Это я не так пользуюсь менеджером или этот ключ не может в принципе подписать? Читал про какой то закрытый ключ, но его в сертификате не увидел

Вот некая инфа по сертификату

Версия    «V3»    Строка

ДатаНачала    01.06.2020 8:26:46    Дата

ДатаОкончания    01.09.2020 8:36:46    Дата

CN    «Тестовый подчиненный УЦ ООО «КРИПТО-ПРО» ГОСТ 2012 (УЦ 2.0)»    Строка

Крипто ПРО csp 4.0

cmex

7 — 02.06.20 — 13:32

(5) у меня регламент будет работать с API, то есть сервер, поэтому на клиент доступа нет. может есть какой вариант другой? я слабо представляю как устроена вся схема работы эцп

Garykom

8 — 02.06.20 — 13:37

(7) У вас два варианта или самим разбираться или кого то нанимать кто уже разобрался

cmex

9 — 02.06.20 — 13:49

(8) почему 2? я бы помог, если бы знал, форму для этого и нужен, имхо

cmex

10 — 02.06.20 — 13:58

(9) *форум

Garykom

11 — 02.06.20 — 14:23

(9) Потому что там нет ничего сложного, обычная работа, которую бесплатно хрен кто будет делать.

Мануалы есть и они достаточно вменяемы, есть форум ЧЗ если что и прочие форумы.

В т.ч. как запросы по http делать или с криптопро/сертификатами работать

Garykom

12 — 02.06.20 — 14:24

Ты конкретные вопросы задавай что не получается а не «помогите мне кто нибудь — сделайте за меня или дайте разжеванное/готовое»

cmex

13 — 02.06.20 — 14:37

(12) ок, по мануалу разобрался. подписать вроде удалось, но в ответ на post запрос прилетает {«error_message»:»Ошибка при проверке подписи»}

подписываю, кодирую и отправляю так

ДД = ПолучитьДвоичныеДанныеИзСтроки(data, КодировкаТекста.UTF8);

РезультатДД = МенеджерКриптографии.Подписать(ДД, Сертификат);

РезультатСтрока = Base64Строка(РезультатДД);

может я в двоичные данные строку исходную не так перевожу? как правильно подписать?

Garykom

14 — 02.06.20 — 14:43

Вариант синтаксиса: Данные подписи сохраняются в файл

Синтаксис:

Подписать(<ИсходныеДанные>, <ВыходныеДанные>, <Сертификат>)

Параметры:

<ИсходныеДанные> (обязательный)

Тип: Строка, ДвоичныеДанные, Поток, ПотокВПамяти, ФайловыйПоток.

Исходные данные для подписывания.

Данные могут размещаться в файле (в этом случае указывается имя файла) или представлены как ДвоичныеДанные.

<ВыходныеДанные> (обязательный)

Тип: Строка: Поток, ПотокВПамяти, ФайловыйПоток.

Имя файла или поток, в который будут выгружены подписанные данные.

<Сертификат> (необязательный)

Тип: СертификатКриптографии.

Используемый сертификат криптографии.

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

Описание варианта метода:

Подписанные данные записываются в файл. Возвращает Неопределено.

cmex

15 — 02.06.20 — 14:46

(14) намекаете, что надо пописать строку, предварительно не переводя в ДД?

cmex

16 — 02.06.20 — 14:46

(15) *подДписать)

Garykom

17 — 02.06.20 — 14:47

(14)+ Только уверен что апи требует прикрепленную подпись?

Если нужна открепленная то стандартный менеджер не пойдет и надо нечто вроде http://catalog.mista.ru/public/1058940/

cmex

18 — 02.06.20 — 14:47

(17) из Мануала —  data String + Подписанные УКЭП зарегистрированного УОТ случайные данные в base64 (ЭП

присоединенная)

Garykom

19 — 02.06.20 — 14:47

(16) А фуй знает что надо, надо разбираться

Лично я не имею представления по какому мануалу и что твоя делать

cmex

20 — 02.06.20 — 14:48

(19) v5 — Документация для партнёров по True API

Garykom

21 — 02.06.20 — 14:49

(18) Тогда попробуй имя файла входного и выходного указывать в Подписать

А затем сравнить с тем что выходит другими способами подписи того же файла.

Есть у криптопро cryptcp и csptest

Garykom

22 — 02.06.20 — 14:51

Garykom

23 — 02.06.20 — 14:55

cmex

24 — 02.06.20 — 15:30

все попробовал — не взлетает пока. чую, что близко, но пока никак

timurhv

25 — 02.06.20 — 16:27

Процедура ОбновитьТокен(ВидAPI, СледующееОповещение)

    АдресМетода = «/api/v3/auth/cert/key»;

    …

    HTTPСервисЗапрос = Новый HTTPСоединение(СтруктураПодключения[АдресAPI],,,,,60, Новый ЗащищенноеСоединениеopenSSL());

    Запрос = Новый HTTPЗапрос(АдресМетода);

    Ответ = HTTPСервисЗапрос.Получить(Запрос);

    Если Ответ.КодСостояния = 200 Тогда

        …

        МассивСертификатов = Новый Массив();

        Если ЗначениеЗаполнено(СертификатыКлючейЭлектроннойПодписиИШифрования) Тогда

            МассивСертификатов.Добавить(СертификатыКлючейЭлектроннойПодписиИШифрования);

        КонецЕсли;

        СтруктураОсновныхДанных = Новый Структура();

        СтруктураОсновныхДанных.Вставить(«СтрокаJSON», ОтветСтруктура.data);

        СтруктураОсновныхДанных.Вставить(«МассивСертификатов», МассивСертификатов);

        СтруктураОсновныхДанных.Вставить(«Открепленная», Ложь);

        СтруктураОсновныхДанных.Вставить(«СсылкаДокумента», «»);

        

        СтруктураДополнительныхДанных = Новый Структура();

        СтруктураДополнительныхДанных.Вставить(«СертификатПользователя», СертификатыКлючейЭлектроннойПодписиИШифрования);

        СтруктураДополнительныхДанных.Вставить(«ОтветСтруктура», ОтветСтруктура);

        СтруктураДополнительныхДанных.Вставить(«СледующееОповещение», СледующееОповещение);

        СтруктураДополнительныхДанных.Вставить(«HTTPСервисЗапрос», HTTPСервисЗапрос);

        ИнтеграцияИСМПСлужебныйКлиент.Подписать(СтруктураОсновныхДанных, Новый ОписаниеОповещения(«ОбработатьСообщения_ПриЗавершенииОперацииПодписи», ЭтотОбъект, СтруктураДополнительныхДанных));

    КонецЕсли;

КонецПроцедуры

Процедура ОбработатьСообщения_ПриЗавершенииОперацииПодписи(ПодписанныеСообщения, Контекст) Экспорт

    Если ПодписанныеСообщения = Неопределено Тогда

        Возврат;

    КонецЕсли;

    

    Для Каждого ЭлементСообщения Из ПодписанныеСообщения Цикл

        ПодписанныйФайл = ИнтеграцияИСКлиентСервер.ДвоичныеДанныеBase64(ЭлементСообщения.СвойстваПодписи.Подпись);

        HTTPСервисЗапрос = Контекст.HTTPСервисЗапрос;

        Тело = «{

        |»»uuid»»: «»» + Контекст.ОтветСтруктура.uuid + «»»,

        |»»data»»: «»» + ПодписанныйФайл + «»»

        |}»;

        АдресМетода = «api/v3/auth/cert/»;

        HTTPЗапрос = Новый HTTPЗапрос(АдресМетода);

        HTTPЗапрос.Заголовки.Вставить(«Content-Type»,»application/json;charset=UTF-8″);

        HTTPЗапрос.УстановитьТелоИзСтроки(Тело);

        Ответ = HTTPСервисЗапрос.ОтправитьДляОбработки(HTTPЗапрос);

    КонецЦикла;

КонецПроцедуры

timurhv

26 — 02.06.20 — 16:41

(13) Base64 = Base64Строка(ДвоичныеДанные);

Base64 = СтрЗаменить(Base64, Символы.ПС, «»);

Base64 = СтрЗаменить(Base64, Символы.ВК, «»);

Символы переноса скорее забыли убрать

cmex

27 — 03.06.20 — 11:16

(26) это из какой конфы? ИнтеграцияИСКлиентСервер.ДвоичныеДанныеBase64(ЭлементСообщения.СвойстваПодписи.Подпись);

cmex

28 — 03.06.20 — 11:33

кажись разобрался, вернусь с результатом

cmex

29 — 03.06.20 — 17:18

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

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

МенеджерКриптографии = Новый МенеджерКриптографии(«Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider», «», 80);

    Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов();

    СертификатыХранилища = Хранилище.ПолучитьВсе();

    Сертификат = СертификатыХранилища[0];

    

    Макет = ПолучитьМакетНаСервере();

    Адрес = ПоместитьВоВременноеХранилище(Макет);     

    Если ПодключитьВнешнююКомпоненту(Адрес, «XMLDSignAddInSymbolicName», ТипВнешнейКомпоненты.Native) Тогда

        Попытка

            ОбъектКомпоненты = Новый(«AddIn.XMLDSignAddInSymbolicName.XMLDSignAddIn»);

            Если ОбъектКомпоненты = Неопределено Тогда

                ВызватьИсключение НСтр(«ru = ‘Оператор Новый вернул Неопределено’»);

            КонецЕсли;

        Исключение

            ВызватьИсключение НСтр(«ru = ‘Не удалось чуток’»);            

        КонецПопытки;        

    КонецЕсли;    

    ОбъектКомпоненты.ПутьККриптопровайдеру = «»;

    СертификатКриптографииBase64 = СертификатКриптографииBase64(Сертификат.Выгрузить());    

    Попытка

        SignatureValue = ОбъектКомпоненты.CMSSign(

            Структура.data, //данные тип строка

            СертификатКриптографииBase64, //выгруженный в ДД сертификат в base64

            «», //пароль

            0, //тип подписи «CAdES-BES»

            Ложь, //открепленная

            17, //РежимВключенияСертификатовКриптографии.ВключатьПолнуюЦепочку

            0) //тип входных данных Строка;

    Исключение

        ВызватьИсключение НСтр(«ru = ‘Ошибка вызова метода CMSSign компоненты XMLDSig.’») + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());

    КонецПопытки;    

    Подпись = Base64Значение(SignatureValue);

    
    Структура.data = ДвоичныеДанныеBase64(Подпись);

    

    ЗаписьJSON = Новый ЗаписьJSON;

    ЗаписьJSON.УстановитьСтроку();

    ЗаписатьJSON(ЗаписьJSON, Структура);

    СтрокаJSON = ЗаписьJSON.Закрыть();

    

    Заголовки = Новый Соответствие;    

    Заголовки.Вставить(«Content-Type», «application/json; charset=utf-8»);

    Заголовки.Вставить(«cache-control», «no-cache»);

    HTTPЗапрос = Новый HTTPЗапрос(«/auth/simpleSignIn», Заголовки);    

    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);

    Попытка

        HTTPОтвет = Соединение.ВызватьHTTPМетод(«POST», HTTPЗапрос);    

    Исключение

        Сообщить(ОписаниеОшибки());

    КонецПопытки;

    

    Если Не HTTPОтвет.КодСостояния = 200 Тогда

        Сообщить(«Код состояния не равен 200»);

        Возврат;

    КонецЕсли;

    

    СтрокаJSON = HTTPОтвет.ПолучитьТелоКакСтроку();

    ЧтениеJSON = Новый ЧтениеJSON;

    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

    Структура = ПрочитатьJSON(ЧтениеJSON);

    ЧтениеJSON.Закрыть();

    
    Токен = Структура.token;

timurhv

30 — 04.06.20 — 10:10

(29) БСП нет разве в конфе?

cmex

31 — 04.06.20 — 13:14

(30) нет, 11.1

  

VitShvets

32 — 19.06.20 — 16:51

(29) Спасибо тебе, добрый человек.

При возникновении перечисленных далее ошибок воспользуйтесь стандартными действиями для решения проблем с криптографией. Ошибки могут возникать при подписании и расшифровке (отправке отчета, обмене, отправке заявления, обновлении статуса заявления и т.д.):

  • набор ключей не определен;
  • неправильный открытый ключ поставщика;
  • не найден сертификат и открытый ключ для расшифровки;
  • не найден сертификат руководителя в системном хранилище сертификатов;
  • не удалось расшифровать файл обновлений;
  • ошибка инициализации криптопровайдера;
  • плохие данные;
  • ошибка при получении свойств сертификата. Не удалось выполнить подписание сертификатом, Федеральная налоговая служба по причине Ошибка при получении свойства сертификата (0x0000000);

  • ошибка интерфейса модуля криптографии. Отсутствует набор ключей. Не удалось выполнить подписание сертификатом по причине: Ошибка интерфейса модуля криптографии. Отсутствует набор ключей;

  • ошибка при получении контекста модуля криптографии. Не удалось выполнить подписание сертификатом , Федеральная налоговая служба по причине Ошибка при получении контекста модуля криптографии;

  • модуль криптографии не поддерживает алгоритмов подписи. Не удалось выполнить подписание сертификатом по причине: Модуль криптографии не поддерживает алгоритмов подписи. Не удалось подписать файл по причине…;

  • не удалось подписать файл по причине: Неправильный зарегистрированный набор ключей. Неправильный зарегистрированный набор ключей. Ошибка подписания документа: Обращение налогоплательщика, связанное с циклом обмена По причине: Не удалось подписать файл по причине…;

  • не удалось подписать файл по причине: Ошибка исполнения функции. Не удалось подписать файл по причине: Ошибка исполнения функции. Ошибка подписания документа: Запрос на информационное обслуживание налогоплательщика, связанное с циклом обмена.

Результаты поиска по запросу:

0x00000000

  • Настройка КриптоПРО для работы с 1С-ЭДО в Linux

    Для работы на Linux рекомендуется использовать последнюю сертифицированную версию КриптоПро CSP.

    Также для работы через браузер потребуется установка расширения для работы с файлами, а также крипторасширение  – подробнее см. п. 3 данной статьи.

    Для работы с системой маркировки…

  • Настройка КриптоПРО для работы с 1С-ЭДО в macOS

    Для работы на macOS рекомендуется использовать последнюю сертифицированную версию КриптоПро CSP.

    Для работы в тонком клиенте необходимо использовать версию платформы 8.3.15.2107, 8.3.16.1791, 8.3.17.1823, 8.3.18.1128 или выше.

    Также для работы через браузер потребуется установка ра…

  • Ошибка при получении свойства сертификата (0x00000000)

    Ошибка при получении свойства сертификата (0x00000000) — это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.

    Чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие…

  

cmex

01.06.20 — 11:16

Добрый день!

Для использования всех методов необходимо иметь УКЭП. Кто нибудь из 1С уже работал по API? Как получить тестовую УКЭП, как использовать уже имеющуюся УКЭП директора организации на Сервере, чтобы автоматом можно было подписывать? Кто сталкивался? Просветите, как процесс устроен? Слышал, про тестовый УЦ, где выдают УКЭП, но не понял как с этим работать. В общем, буду признателен за любую информацию

  

cmex

1 — 01.06.20 — 14:21

up

  

ChMikle

2 — 01.06.20 — 14:25

  

cmex

3 — 01.06.20 — 17:08

(2) Спасибо

  

timurhv

4 — 01.06.20 — 17:13

Тестовая УКЭП должна быть на имя директора (если стоит KIS, то его лучше закрыть, т.к. из-за сертификата тестового сервера не пускает дальше регистрировать):

https://ismp.wiki/index.php?title=Софт

Если выходит ошибка регистрации на тестовой площадке — писать в тех.поддержку ЧЗ.

  

lodger

5 — 01.06.20 — 18:46

(0)

1) есть боевой и есть тестовый контур API

2) ключ можно использовать один и тот же.

3) нет нужды использовать ключ на сервере. достаточно сотворить токен авторизации на клиенте и отдать его на сервер.

4) у токена есть время жизни, 10 часов.

  

cmex

6 — 02.06.20 — 13:29

(5) удалось получить сертификат в Тестовом подчиненном УЦ КриптоПро. Установил сертификат под своей учеткой в ОС

Далее пишу код

ИнтеграционныйСтенд = «int01.gismt.crpt.tech/api/v3/true-api»;

Соединение = Новый HTTPСоединение(ИнтеграционныйСтенд,,,,,, Новый ЗащищенноеСоединениеOpenSSL);

HTTPЗапрос = Новый HTTPЗапрос(«/auth/key»);

HTTPОтвет = Соединение.ВызватьHTTPМетод(«GET», HTTPЗапрос);    

СтрокаJSON = HTTPОтвет.ПолучитьТелоКакСтроку();

ЧтениеJSON = Новый ЧтениеJSON;

ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

Структура = ПрочитатьJSON(ЧтениеJSON);

ЧтениеJSON.Закрыть();

МенеджерКриптографии = Новый МенеджерКриптографии(«Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider», «», 75);

Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов();

СертификатыХранилища = Хранилище.ПолучитьВсе();

Сертификат = СертификатыХранилища[0];    

ДД = ПолучитьДвоичныеДанныеИзСтроки(Структура.data);

Результат = МенеджерКриптографии.Подписать(ДД, Сертификат);

ЗаписьJSON = Новый ЗаписьJSON;

ЗаписьJSON.УстановитьСтроку();

ЗаписатьJSON(ЗаписьJSON, Структура);

СтрокаJSON = ЗаписьJSON.Закрыть();

Заголовки = Новый Соответствие;    

Заголовки.Вставить(«Content-Type», «application/json; charset=utf-8»);

Заголовки.Вставить(«cache-control», «no-cache»);

HTTPЗапрос = Новый HTTPЗапрос(«/auth/simpleSignIn», Заголовки);    

HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);

Попытка

    HTTPОтвет = Соединение.ВызватьHTTPМетод(«POST», HTTPЗапрос);    

Исключение

    Сообщить(ОписаниеОшибки());

КонецПопытки;

Вываливается ошибка «Ошибка при получении свойства сертификата (0x00000000)»

Это я не так пользуюсь менеджером или этот ключ не может в принципе подписать? Читал про какой то закрытый ключ, но его в сертификате не увидел

Вот некая инфа по сертификату

Версия    «V3»    Строка

ДатаНачала    01.06.2020 8:26:46    Дата

ДатаОкончания    01.09.2020 8:36:46    Дата

CN    «Тестовый подчиненный УЦ ООО «КРИПТО-ПРО» ГОСТ 2012 (УЦ 2.0)»    Строка

Крипто ПРО csp 4.0

  

cmex

7 — 02.06.20 — 13:32

(5) у меня регламент будет работать с API, то есть сервер, поэтому на клиент доступа нет. может есть какой вариант другой? я слабо представляю как устроена вся схема работы эцп

  

Garykom

8 — 02.06.20 — 13:37

(7) У вас два варианта или самим разбираться или кого то нанимать кто уже разобрался

  

cmex

9 — 02.06.20 — 13:49

(8) почему 2? я бы помог, если бы знал, форму для этого и нужен, имхо

  

cmex

10 — 02.06.20 — 13:58

(9) *форум

  

Garykom

11 — 02.06.20 — 14:23

(9) Потому что там нет ничего сложного, обычная работа, которую бесплатно хрен кто будет делать.

Мануалы есть и они достаточно вменяемы, есть форум ЧЗ если что и прочие форумы.

В т.ч. как запросы по http делать или с криптопро/сертификатами работать

  

Garykom

12 — 02.06.20 — 14:24

Ты конкретные вопросы задавай что не получается а не «помогите мне кто нибудь — сделайте за меня или дайте разжеванное/готовое»

  

cmex

13 — 02.06.20 — 14:37

(12) ок, по мануалу разобрался. подписать вроде удалось, но в ответ на post запрос прилетает {«error_message»:»Ошибка при проверке подписи»}

подписываю, кодирую и отправляю так

ДД = ПолучитьДвоичныеДанныеИзСтроки(data, КодировкаТекста.UTF8);

РезультатДД = МенеджерКриптографии.Подписать(ДД, Сертификат);

РезультатСтрока = Base64Строка(РезультатДД);

может я в двоичные данные строку исходную не так перевожу? как правильно подписать?

  

Garykom

14 — 02.06.20 — 14:43

Вариант синтаксиса: Данные подписи сохраняются в файл

Синтаксис:

Подписать(<ИсходныеДанные>, <ВыходныеДанные>, <Сертификат>)

Параметры:

<ИсходныеДанные> (обязательный)

Тип: Строка, ДвоичныеДанные, Поток, ПотокВПамяти, ФайловыйПоток.

Исходные данные для подписывания.

Данные могут размещаться в файле (в этом случае указывается имя файла) или представлены как ДвоичныеДанные.

<ВыходныеДанные> (обязательный)

Тип: Строка: Поток, ПотокВПамяти, ФайловыйПоток.

Имя файла или поток, в который будут выгружены подписанные данные.

<Сертификат> (необязательный)

Тип: СертификатКриптографии.

Используемый сертификат криптографии.

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

Описание варианта метода:

Подписанные данные записываются в файл. Возвращает Неопределено.

  

cmex

15 — 02.06.20 — 14:46

(14) намекаете, что надо пописать строку, предварительно не переводя в ДД?

  

cmex

16 — 02.06.20 — 14:46

(15) *подДписать)

  

Garykom

17 — 02.06.20 — 14:47

(14)+ Только уверен что апи требует прикрепленную подпись?

Если нужна открепленная то стандартный менеджер не пойдет и надо нечто вроде http://catalog.mista.ru/public/1058940/

  

cmex

18 — 02.06.20 — 14:47

(17) из Мануала —  data String + Подписанные УКЭП зарегистрированного УОТ случайные данные в base64 (ЭП

присоединенная)

  

Garykom

19 — 02.06.20 — 14:47

(16) А фуй знает что надо, надо разбираться

Лично я не имею представления по какому мануалу и что твоя делать

  

cmex

20 — 02.06.20 — 14:48

(19) v5 — Документация для партнёров по True API

  

Garykom

21 — 02.06.20 — 14:49

(18) Тогда попробуй имя файла входного и выходного указывать в Подписать

А затем сравнить с тем что выходит другими способами подписи того же файла.

Есть у криптопро cryptcp и csptest

  

Garykom

22 — 02.06.20 — 14:51

  

Garykom

23 — 02.06.20 — 14:55

  

cmex

24 — 02.06.20 — 15:30

все попробовал — не взлетает пока. чую, что близко, но пока никак

  

timurhv

25 — 02.06.20 — 16:27

Процедура ОбновитьТокен(ВидAPI, СледующееОповещение)

    АдресМетода = «/api/v3/auth/cert/key»;

    …

    HTTPСервисЗапрос = Новый HTTPСоединение(СтруктураПодключения[АдресAPI],,,,,60, Новый ЗащищенноеСоединениеopenSSL());

    Запрос = Новый HTTPЗапрос(АдресМетода);

    Ответ = HTTPСервисЗапрос.Получить(Запрос);

    Если Ответ.КодСостояния = 200 Тогда

        …

        МассивСертификатов = Новый Массив();

        Если ЗначениеЗаполнено(СертификатыКлючейЭлектроннойПодписиИШифрования) Тогда

            МассивСертификатов.Добавить(СертификатыКлючейЭлектроннойПодписиИШифрования);

        КонецЕсли;

        СтруктураОсновныхДанных = Новый Структура();

        СтруктураОсновныхДанных.Вставить(«СтрокаJSON», ОтветСтруктура.data);

        СтруктураОсновныхДанных.Вставить(«МассивСертификатов», МассивСертификатов);

        СтруктураОсновныхДанных.Вставить(«Открепленная», Ложь);

        СтруктураОсновныхДанных.Вставить(«СсылкаДокумента», «»);

        

        СтруктураДополнительныхДанных = Новый Структура();

        СтруктураДополнительныхДанных.Вставить(«СертификатПользователя», СертификатыКлючейЭлектроннойПодписиИШифрования);

        СтруктураДополнительныхДанных.Вставить(«ОтветСтруктура», ОтветСтруктура);

        СтруктураДополнительныхДанных.Вставить(«СледующееОповещение», СледующееОповещение);

        СтруктураДополнительныхДанных.Вставить(«HTTPСервисЗапрос», HTTPСервисЗапрос);

        ИнтеграцияИСМПСлужебныйКлиент.Подписать(СтруктураОсновныхДанных, Новый ОписаниеОповещения(«ОбработатьСообщения_ПриЗавершенииОперацииПодписи», ЭтотОбъект, СтруктураДополнительныхДанных));

    КонецЕсли;

КонецПроцедуры

Процедура ОбработатьСообщения_ПриЗавершенииОперацииПодписи(ПодписанныеСообщения, Контекст) Экспорт

    Если ПодписанныеСообщения = Неопределено Тогда

        Возврат;

    КонецЕсли;

    

    Для Каждого ЭлементСообщения Из ПодписанныеСообщения Цикл

        ПодписанныйФайл = ИнтеграцияИСКлиентСервер.ДвоичныеДанныеBase64(ЭлементСообщения.СвойстваПодписи.Подпись);

        HTTPСервисЗапрос = Контекст.HTTPСервисЗапрос;

        Тело = «{

        |»»uuid»»: «»» + Контекст.ОтветСтруктура.uuid + «»»,

        |»»data»»: «»» + ПодписанныйФайл + «»»

        |}»;

        АдресМетода = «api/v3/auth/cert/»;

        HTTPЗапрос = Новый HTTPЗапрос(АдресМетода);

        HTTPЗапрос.Заголовки.Вставить(«Content-Type»,»application/json;charset=UTF-8″);

        HTTPЗапрос.УстановитьТелоИзСтроки(Тело);

        Ответ = HTTPСервисЗапрос.ОтправитьДляОбработки(HTTPЗапрос);

    КонецЦикла;

КонецПроцедуры

  

timurhv

26 — 02.06.20 — 16:41

(13) Base64 = Base64Строка(ДвоичныеДанные);

Base64 = СтрЗаменить(Base64, Символы.ПС, «»);

Base64 = СтрЗаменить(Base64, Символы.ВК, «»);

Символы переноса скорее забыли убрать

  

cmex

27 — 03.06.20 — 11:16

(26) это из какой конфы? ИнтеграцияИСКлиентСервер.ДвоичныеДанныеBase64(ЭлементСообщения.СвойстваПодписи.Подпись);

  

cmex

28 — 03.06.20 — 11:33

кажись разобрался, вернусь с результатом

  

cmex

29 — 03.06.20 — 17:18

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

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

МенеджерКриптографии = Новый МенеджерКриптографии(«Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider», «», 80);

    Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов();

    СертификатыХранилища = Хранилище.ПолучитьВсе();

    Сертификат = СертификатыХранилища[0];

    

    Макет = ПолучитьМакетНаСервере();

    Адрес = ПоместитьВоВременноеХранилище(Макет);     

    Если ПодключитьВнешнююКомпоненту(Адрес, «XMLDSignAddInSymbolicName», ТипВнешнейКомпоненты.Native) Тогда

        Попытка

            ОбъектКомпоненты = Новый(«AddIn.XMLDSignAddInSymbolicName.XMLDSignAddIn»);

            Если ОбъектКомпоненты = Неопределено Тогда

                ВызватьИсключение НСтр(«ru = ‘Оператор Новый вернул Неопределено’»);

            КонецЕсли;

        Исключение

            ВызватьИсключение НСтр(«ru = ‘Не удалось чуток’»);            

        КонецПопытки;        

    КонецЕсли;    

    ОбъектКомпоненты.ПутьККриптопровайдеру = «»;

    СертификатКриптографииBase64 = СертификатКриптографииBase64(Сертификат.Выгрузить());    

    Попытка

        SignatureValue = ОбъектКомпоненты.CMSSign(

            Структура.data, //данные тип строка

            СертификатКриптографииBase64, //выгруженный в ДД сертификат в base64

            «», //пароль

            0, //тип подписи «CAdES-BES»

            Ложь, //открепленная

            17, //РежимВключенияСертификатовКриптографии.ВключатьПолнуюЦепочку

            0) //тип входных данных Строка;

    Исключение

        ВызватьИсключение НСтр(«ru = ‘Ошибка вызова метода CMSSign компоненты XMLDSig.’») + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());

    КонецПопытки;    

    Подпись = Base64Значение(SignatureValue);

    
    Структура.data = ДвоичныеДанныеBase64(Подпись);

    

    ЗаписьJSON = Новый ЗаписьJSON;

    ЗаписьJSON.УстановитьСтроку();

    ЗаписатьJSON(ЗаписьJSON, Структура);

    СтрокаJSON = ЗаписьJSON.Закрыть();

    

    Заголовки = Новый Соответствие;    

    Заголовки.Вставить(«Content-Type», «application/json; charset=utf-8»);

    Заголовки.Вставить(«cache-control», «no-cache»);

    HTTPЗапрос = Новый HTTPЗапрос(«/auth/simpleSignIn», Заголовки);    

    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);

    Попытка

        HTTPОтвет = Соединение.ВызватьHTTPМетод(«POST», HTTPЗапрос);    

    Исключение

        Сообщить(ОписаниеОшибки());

    КонецПопытки;

    

    Если Не HTTPОтвет.КодСостояния = 200 Тогда

        Сообщить(«Код состояния не равен 200»);

        Возврат;

    КонецЕсли;

    

    СтрокаJSON = HTTPОтвет.ПолучитьТелоКакСтроку();

    ЧтениеJSON = Новый ЧтениеJSON;

    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

    Структура = ПрочитатьJSON(ЧтениеJSON);

    ЧтениеJSON.Закрыть();

    
    Токен = Структура.token;

  

timurhv

30 — 04.06.20 — 10:10

(29) БСП нет разве в конфе?

  

cmex

31 — 04.06.20 — 13:14

(30) нет, 11.1

  

VitShvets

32 — 19.06.20 — 16:51

(29) Спасибо тебе, добрый человек.

При возникновении перечисленных далее ошибок воспользуйтесь стандартными действиями для решения проблем с криптографией. Ошибки могут возникать при подписании и расшифровке (отправке отчета, обмене, отправке заявления, обновлении статуса заявления и т.д.):

  • набор ключей не определен;
  • неправильный открытый ключ поставщика;
  • не найден сертификат и открытый ключ для расшифровки;
  • не найден сертификат руководителя в системном хранилище сертификатов;
  • не удалось расшифровать файл обновлений;
  • ошибка инициализации криптопровайдера;
  • плохие данные;
  • ошибка при получении свойств сертификата. Не удалось выполнить подписание сертификатом, Федеральная налоговая служба по причине Ошибка при получении свойства сертификата (0x0000000);

  • ошибка интерфейса модуля криптографии. Отсутствует набор ключей. Не удалось выполнить подписание сертификатом по причине: Ошибка интерфейса модуля криптографии. Отсутствует набор ключей;

  • ошибка при получении контекста модуля криптографии. Не удалось выполнить подписание сертификатом , Федеральная налоговая служба по причине Ошибка при получении контекста модуля криптографии;

  • модуль криптографии не поддерживает алгоритмов подписи. Не удалось выполнить подписание сертификатом по причине: Модуль криптографии не поддерживает алгоритмов подписи. Не удалось подписать файл по причине…;

  • не удалось подписать файл по причине: Неправильный зарегистрированный набор ключей. Неправильный зарегистрированный набор ключей. Ошибка подписания документа: Обращение налогоплательщика, связанное с циклом обмена По причине: Не удалось подписать файл по причине…;

  • не удалось подписать файл по причине: Ошибка исполнения функции. Не удалось подписать файл по причине: Ошибка исполнения функции. Ошибка подписания документа: Запрос на информационное обслуживание налогоплательщика, связанное с циклом обмена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *