Разгребая свои очередные заметки по тому, каким образом была решена та или иная проблема я наткнулся на, казалось бы, простую, на первый взгляд, проблему – ошибку “Ошибка при получении свойства сертификата (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С. Где-то осела какая-то не актуальная информация о сертификате.
Решение проблем
27.04.2023
Комментариев нет
Где хранится моя электронная подпись?
Куда сохранилась моя электронная подпись? Контейнер с ключами электронной подписи был сохранён в процессе прохождения процедуры получения сертификата электронной подписи. В большинстве случаев пользователь самостоятельно выбирает носитель для хранения контейнера. Контейнер?
Читать далее
24.04.2023
Комментариев нет
16.03.2023
Комментариев нет
02.03.2023
Комментариев нет
Установка сертификата в контейнер вручную
Иногда не получается установить сертификат в контейнер КриптоПро CSP в автоматическом режиме.В этом случае необходимо это сделать в ручном режиме. Запуск программы «Инструменты КриптоПро» (cptools) Установка сертификата в контейнер Откройте
Читать далее
25.02.2023
Комментариев нет
12.09.2022
Комментариев нет
20.05.2022
14 комментариев
19.05.2022
Комментариев нет
17.05.2022
Комментариев нет
настройка
07.02.2022
35 комментариев
Удалена ЭЦП с флешки. Как восстановить?
Внимание! Эта инструкция поможет только если ЭЦП (контейнер с ключами) была записана именно на флешку, а не USB-токен! Восстановление с USB-токенов невозможно! Удостоверяющий центр не имеет права хранить ключи электронных
Читать далее
14.09.2021
14 комментариев
гиис дмдк
09.08.2021
Комментариев нет
windows
25.07.2021
Комментариев нет
JaCarta
Обновление прошивки JaCarta LT
Для предотвращения потери ЭЦП необходимо срочно обновить прошивку носителя JaCarta LT Перед началом работы программы 1. Необходимо убедится, что к компьютеру подключен только один токен JaCarta LT! 2. Недопустимо извлекать
Читать далее
30.03.2019
Комментариев нет
КриптоПро
27.04.2018
1 комментарий
Здравствуйте, прошу помочь в следующем вопросе:
Есть простенький код, который подписывает строку:
Перем МК;
Сертификат = "";
ТипыХранилищ = Новый Массив;
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
МК = Новый МенеджерКриптографии("", "", 78);
Хранилище = МК.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
СертификатыХранилища = Хранилище.ПолучитьВсе();
Сертификат = СертификатыХранилища[0];
Стр = ПолучитьДвоичныеДанныеИзСтроки("123456");
Результат = МК.Подписать(Стр, Сертификат);
На компьютере установлен криптопровайдер VipNet CSP
Валится ошибка: «Ошибка при получении свойства сертификата (0x00000000)»
Проверил все, что мог:
1. сертификат действительный и связан с закрытым ключом
(скрин приложил)
2. Другими программами этот сертификат можно использовать (для подписания, например)
3. Может, думаю, тип криптопровайдера указал неверно (78) — нет, правильно, если указать другой тип — то ошибка именно в типе криптопровайдера.
Посмотрел, что содержит переменная сертификат в отладчике (скрин) — сертификат есть, вроде бы все нормально:
В интернете накопал только информацию, что сертификат не связан с закрытым ключом, а у меня он связан.
Коллеги, куда смотреть, куда копнуть?
Дата обновления: 28.06.2022
Номер карточки: SD0012282
Ошибка при получении свойства сертификата (0x00000000) — это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.
Чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие связи закрытого ключа с открытой частью сертификата, требуется узнать режим запуска 1С:
- Если база файловая и запускается через тонкий клиент на том же компьютере, то наличие связи надо проверять для пользователя ОС, под которым запускается сеанс 1С на этом компьютере (без повышения прав, т.е. без «запуск от имени администратора»).
- Если файловая ИБ запускается через браузер, т.е. используется web-сервер (в том числе на одном и том же компьютере) и пользователь планирует работать с локальной подписью (т.е. сертификат будет доступен только одному пользователю и только на одном компьютере) — то наличие связи надо проверять на этом компьютере для пользователя, под которым запущен браузер, без повышения прав. В этом случае ошибки в проверках на сервере проблемой не являются.
- Если файловая ИБ запускается через браузер и пользователь планирует использовать серверную подпись (т.е. сертификат будет доступен разным пользователям с разных компьютеров) — то наличие связи надо проверять для пользователя ОС, под которым запущен web-сервер, без повышения прав (и на том же компьютере, где запущен web-сервер). В этом случае ошибки в проверках на клиенте проблемой не являются.
- Если база клиент-серверная и проверяется подпись на сервере, то наличие связи надо проверять для пользователя ОС, под которым запущен сервер 1С без повышения прав (если используется web-сервер, то все равно проверки выполнять для пользователя ОС, под которым запущен сервер 1С). В этом случае ошибка в проверке подписи на клиенте проблемой не является.
- Если база клиент-серверная и проверяется подпись на клиенте, то наличие связи надо проверять для пользователя ОС, под которым запускается сеанс 1С на машине-клиенте без повышения прав. В этом случае ошибка в проверке подписи на сервере проблемой не является.
Необходимо выяснить в каком из вышеперечисленных режимов происходит запуск 1С при возникновении ошибки, а также в какой проверке возникает ошибка (проверка на сервере или на клиенте). Все дальнейшие рекомендации выполнять на нужной машине и в сеансе нужного пользователя ОС без повышения прав (т.е. без «запуск от имени администратора»).
1. Проверить, что сертификат установлен в Личный список сертификатов пользователя ОС, а также наличие связи с закрытым ключом:
1.1. Под пользователем ОС (см. выше, как определить) запустить консоль сертификатов — certmgr.msc
1.2. В консоли развернуть папку «Личное» и перейти в «Сертификаты».
1.3. Открыть проблемный сертификат.
В сведениях о сертификате не должно быть красного креста или восклицательного знака.
- Восклицательный знак обозначает, что цепочка до корневого сертификата не построена.
- Красный крест обозначает, что сертификат истек или не выстроена цепочка сертификатов до корневого.
С подробной инструкцией как построить цепочку сертификатов, можно ознакомиться по ссылке.
В нижней части должен отображаться значок ключа с надписью: «Есть закрытый ключ для этого сертификата», если данный значок отсутствует, то это означает, что закрытого ключа нет (как это исправить — см. п. 2).
2. Проверка связи и перепривязка средствами криптопровайдера:
2.1. В сеансе пользователя ОС (без повышения прав) переустановить сертификат в Личное хранилище сертификатов с привязкой к закрытому ключу (Инструкция по переустановке http://1c-edo.ru/handbook/28/4008/).
2.2. Если сертификат установлен в Личном хранилище сертификатов администратора ОС (т.е. в реестре администратора), тогда нужно его (вместе с закрытым ключом) экспортировать в файл средствами Windows (в файл pfx). А затем импортировать в сеансе пользователя ОС, из под которого выполняется запуск 1С без повышения прав. Для этого необходимо в сертификате перейти на вкладку «Состав» и нажать «Копировать в файл…»
В мастере экспорта сертификатов необходимо выбрать «Да, экспортировать закрытый ключ» и нажать «Далее».
На следующем шаге автоматически определится предпочтительный формат экспортируемого файла (.PFX). Необходимо нажать «Далее».
После чего необходимо задать пароль для закрытого ключа, а также выполнить его повторный ввод в поле «Подтверждение» и нажать «Далее».
На следующем шаге мастера экспорта сертификатов требуется указать имя файла и доступную директорию компьютера.
И завершить экспорт.
В сеансе пользователя, двойным щелчком левой кнопки мыши по экспортированному файлу, необходимо запустить мастер импорта сертификатов.
В поле «Расположение хранилища» выбрать «Текущий пользователь» и нажать «Далее».
Импортируемый файл определится автоматически.
На следующем шаге мастера необходимо ввести пароль, который был указан при экспорте файла, и нажать «Далее».
После чего завершить импорт сертификата, выбрав «Автоматически выбрать хранилище на основе типа сертификата».
И выполнить рекомендации из статьи http://1c-edo.ru/handbook/28/4008/
Если криптосредство (КриптоПро, VipNet) не запускается без повышения прав в сеансе пользователя ОС, из-под которого выполняется запуск приложений 1С (запуск сервера 1С или web-сервера для файловой ИБ), рекомендуется выполнить переустановку криптосредства, чтобы оно было доступно в сеансе пользователя ОС, из-под которого выполняется запуск приложений 1С (и/или сервера/web-сервера).
Также вам может быть интересно:
Настройка клиент-серверного подписания электронных документов
Сертификат не найден на компьютере
Настройка криптопровайдера ViPNet CSP для работы с 1С-ЭДО
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 4.0
»
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)
danila24 |
|
Статус: Новичок Группы: Участники Зарегистрирован: 09.09.2019(UTC) Поблагодарили: 1 раз в 1 постах |
Здравствуйте. |
|
|
Андрей Писарев |
|
Статус: Сотрудник Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сказал «Спасибо»: 451 раз |
Здравствуйте. Расскажите, где как устанавливали сертификат, под какой учётной записью, |
Техническую поддержку оказываем тут |
|
|
WWW |
danila24 |
|
Статус: Новичок Группы: Участники Зарегистрирован: 09.09.2019(UTC) Поблагодарили: 1 раз в 1 постах |
В общем сами разобрались |
|
|
R.Salo |
|
Статус: Новичок Группы: Участники
Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться. |
|
|
Андрей Писарев |
|
Статус: Сотрудник Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сказал «Спасибо»: 451 раз |
Автор: R.Salo Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться. Здравствуйте. Вопросы те же. Тестирование сертификата проходит без проблем через СервисПротестироватьПо сертификату? |
Техническую поддержку оказываем тут |
|
|
WWW |
R.Salo |
|
Статус: Новичок Группы: Участники
Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
тестирование проходит, хранилище — текущий пользователь-личные-реестр |
|
|
R.Salo |
|
Статус: Новичок Группы: Участники Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
Добрый день, нет решения проблемы? |
|
|
two_oceans |
|
Статус: Эксперт Группы: Участники Зарегистрирован: 05.03.2015(UTC) Сказал(а) «Спасибо»: 110 раз |
Добрый день. Меня как-то смущает что код 0 в первом сообщении, у Вас такой же код? Многое зависит от конкретной схемы работы 1С. На всякий случай, кратко пробегусь по основным моментам, может у Вас тоже идеи возникнут что не так. Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных. 1С запускается под другим пользователем, не под тем от имени которого тестируете? Например, у нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре — они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе — видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера. Если подписание 1С запускается в службе нужен компонент Криптопровайдер уровня ОС. Если запускается от LocalSystem или виртуальной учетной записи службы, то вообще имеет смысл использовать хранилище компьютера для сертификата и не хранить контейнер в реестре, не забудьте дать права на контейнер для этой учетной записи (как в хранилище, так и доступ к папке на носителе или доступ к токену). Виртуальных учетных записей служб нет в поиске пользователей, их нужно вводить вручную. Кто-то жаловался что у него с виртуальными учетными записями не вышло, но лично я не проверял. |
|
|
danila24 |
|
Статус: Новичок Группы: Участники Зарегистрирован: 09.09.2019(UTC) Поблагодарили: 1 раз в 1 постах |
Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про. Отредактировано пользователем 5 ноября 2019 г. 6:28:20(UTC) |
|
|
1 пользователь поблагодарил danila24 за этот пост. |
R.Salo
оставлено 07.11.2019(UTC) |
R.Salo |
|
Статус: Новичок Группы: Участники
Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
Автор: danila24 Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про. Огромное СПАСИБО! Ваши советы помогли))) |
|
|
Пользователи, просматривающие эту тему |
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С)
danila24 |
|
Статус: Новичок Группы: Участники Зарегистрирован: 09.09.2019(UTC) Поблагодарили: 1 раз в 1 постах |
Здравствуйте. |
|
|
Андрей Писарев |
|
Статус: Сотрудник Группы: Участники Зарегистрирован: 26.07.2011(UTC) Сказал «Спасибо»: 451 раз |
Здравствуйте. Расскажите, где как устанавливали сертификат, под какой учётной записью, |
Техническую поддержку оказываем тут |
|
|
WWW |
danila24 |
|
Статус: Новичок Группы: Участники Зарегистрирован: 09.09.2019(UTC) Поблагодарили: 1 раз в 1 постах |
|
|
|
R.Salo |
|
Статус: Новичок Группы: Участники Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться. |
|
|
Андрей Писарев |
|
Статус: Сотрудник Группы: Участники Зарегистрирован: 26.07.2011(UTC) Сказал «Спасибо»: 451 раз |
Автор: R.Salo Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться. Здравствуйте. Вопросы те же. Тестирование сертификата проходит без проблем через СервисПротестироватьПо сертификату? |
Техническую поддержку оказываем тут |
|
|
WWW |
R.Salo |
|
Статус: Новичок Группы: Участники Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
тестирование проходит, хранилище — текущий пользователь-личные-реестр |
|
|
R.Salo |
|
Статус: Новичок Группы: Участники Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
Добрый день, нет решения проблемы? |
|
|
two_oceans |
|
Статус: Эксперт Группы: Участники Зарегистрирован: 05.03.2015(UTC) Сказал(а) «Спасибо»: 110 раз |
Добрый день. Меня как-то смущает что код 0 в первом сообщении, у Вас такой же код? Многое зависит от конкретной схемы работы 1С. На всякий случай, кратко пробегусь по основным моментам, может у Вас тоже идеи возникнут что не так. Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных. 1С запускается под другим пользователем, не под тем от имени которого тестируете? Например, у нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре — они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе — видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера. Если подписание 1С запускается в службе нужен компонент Криптопровайдер уровня ОС. Если запускается от LocalSystem или виртуальной учетной записи службы, то вообще имеет смысл использовать хранилище компьютера для сертификата и не хранить контейнер в реестре, не забудьте дать права на контейнер для этой учетной записи (как в хранилище, так и доступ к папке на носителе или доступ к токену). Виртуальных учетных записей служб нет в поиске пользователей, их нужно вводить вручную. Кто-то жаловался что у него с виртуальными учетными записями не вышло, но лично я не проверял. |
|
|
danila24 |
|
Статус: Новичок Группы: Участники Зарегистрирован: 09.09.2019(UTC) Поблагодарили: 1 раз в 1 постах |
Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про. Отредактировано пользователем 5 ноября 2019 г. 6:28:20(UTC) |
|
|
1 пользователь поблагодарил danila24 за этот пост. |
R.Salo
оставлено 07.11.2019(UTC) |
R.Salo |
|
Статус: Новичок Группы: Участники Зарегистрирован: 29.10.2019(UTC) Сказал(а) «Спасибо»: 1 раз |
Автор: danila24 Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про. Огромное СПАСИБО! Ваши советы помогли))) |
|
|
Пользователи, просматривающие эту тему |
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) Спасибо тебе, добрый человек.
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 4.0
»
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)
danila24 |
|
Статус: Новичок Группы: Участники Поблагодарили: 1 раз в 1 постах |
Здравствуйте. |
|
|
Андрей Писарев |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
Здравствуйте. Расскажите, где как устанавливали сертификат, под какой учётной записью, |
Техническую поддержку оказываем тут |
|
|
WWW |
danila24 |
|
Статус: Новичок Группы: Участники Поблагодарили: 1 раз в 1 постах |
В общем сами разобрались |
|
|
R.Salo |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться. |
|
|
Андрей Писарев |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
Автор: R.Salo Добрый день, не могли бы вы поделиться решением этой проблемы?такая же ошибка на новом сервере , не можем разобраться. Здравствуйте. Вопросы те же. Тестирование сертификата проходит без проблем через СервисПротестироватьПо сертификату? |
Техническую поддержку оказываем тут |
|
|
WWW |
R.Salo |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 1 раз |
тестирование проходит, хранилище — текущий пользователь-личные-реестр |
|
|
R.Salo |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Добрый день, нет решения проблемы? |
|
|
two_oceans |
|
Статус: Эксперт Группы: Участники Сказал(а) «Спасибо»: 110 раз |
Добрый день. Меня как-то смущает что код 0 в первом сообщении, у Вас такой же код? Многое зависит от конкретной схемы работы 1С. На всякий случай, кратко пробегусь по основным моментам, может у Вас тоже идеи возникнут что не так. Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных. 1С запускается под другим пользователем, не под тем от имени которого тестируете? Например, у нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре — они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе — видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера. Если подписание 1С запускается в службе нужен компонент Криптопровайдер уровня ОС. Если запускается от LocalSystem или виртуальной учетной записи службы, то вообще имеет смысл использовать хранилище компьютера для сертификата и не хранить контейнер в реестре, не забудьте дать права на контейнер для этой учетной записи (как в хранилище, так и доступ к папке на носителе или доступ к токену). Виртуальных учетных записей служб нет в поиске пользователей, их нужно вводить вручную. Кто-то жаловался что у него с виртуальными учетными записями не вышло, но лично я не проверял. |
|
|
danila24 |
|
Статус: Новичок Группы: Участники Поблагодарили: 1 раз в 1 постах |
Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про. Отредактировано пользователем 5 ноября 2019 г. 6:28:20(UTC) |
|
|
1 пользователь поблагодарил danila24 за этот пост. |
R.Salo
оставлено 07.11.2019(UTC) |
R.Salo |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Автор: danila24 Во первых на сервере должна работать служба КриптоПро по хранению ключей. Ее надо устанавливать при установке крипто про. Огромное СПАСИБО! Ваши советы помогли))) |
|
|
Пользователи, просматривающие эту тему |
Guest |
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 4.0
»
Ошибка при получении свойства сертификата (0x00000000) (на сервере 1С)
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.