1с сертификат не предназначен для указанного использования

Обновлено: 07.07.2024

В сервисе 1С-Отчетность доступна возможность использования не только сертификата выпущенного УЦ ГК Калуга Астрал, но и сертификатов следующих сторонних УЦ:

  • ООО«Компания «Тензор»;
  • ООО«Такском»;
  • ФНС России;
  • ООО «Центр Бухгалтерских услуг»;
  • ООО «Научно-производственный центр «1С»;
  • ПАО «Сбербанк России»;
  • АО «Тинькофф Банк»;
  • АО «Электронная Москва»;
  • ООО «Сертум-Про»;
  • ООО «КОРУС Консалтинг СНГ»;
  • Федеральное казначейство (выдает сертификаты только бюджетным и гос. учереждениям);
  • Генеральная прокуратура Российской Федерации ;
  • АО «Тандер»;
  • ФГБУ «Федеральная кадастровая палата Федеральной службы государственной регистрации, кадастра и картографии»;
  • ООО "АЙТИКОМ";
  • АО "Аналитический центр";
  • Общество с ограниченной ответственностью "Модум";
  • Центральный банк Российской Федерации (ЦБ РФ);
  • АО "Энергоцентр";
  • ПАО "Совкомбанк";
  • АО «Информационные технологии и коммуникационные системы» (АО «ИнфоТеКС»);
  • ПАО «Промсвязьбанк»;
  • ООО «ГАЗИНФОРМСЕРВИС»;
  • АО «Единая электронная торговая площадка»;
  • АО «Производственная фирма «СКБ Контур»;
  • КГКУ «Центр информационных технологий Красноярского края»;
  • ООО «Региональный сервисный центр «Инфо-Бухгалтер»;
  • ЗАО «ТаксНет»;
  • ЗАО «ЦЭК»;
  • ГУ Пенсионный фонд Российской Федерации (ПФР);
  • ООО «БСС-Безопасность»;
  • ООО «Гвард-Информ»;
  • ПАО «МегаФон»;
  • ООО Информационный центр «ВЫБОР»;
  • ООО «Научно-производственная фирма «Форус»;
  • ООО «Небо»;
  • ООО «ЦИБ-Сервис»;
  • АО «ЦентрИнформ»;
  • АО «Гринатом»;
  • АО «ИнфоТеКС Интернет Траст» ;
  • Банк ВТБ (ПАО);
  • Генеральная прокуратура Российской Федерации;
  • ООО "ЭТП ГПБ Консалтинг";
  • АО "Торговый дом "ПЕРЕКРЕСТОК".

Возможность использования сертификатов стороннего УЦ доступна в следующих конфигурациях:

  • Бухгалтерия предприятия, редакция 3.0, начиная с версии 3.0.89.47;
  • Зарплата и Управление Персоналом, редакция 3.1, начиная с версии 3.1.17.135;
  • Зарплата и кадры государственного учреждения, редакция 3, начиная с версии 3.1.17.135;
  • Бухгалтерия предприятия КОРП, редакция 3.0, начиная с версии 3.0.89.47;
  • Бухгалтерия государственного учреждения, редакция 2.0, начиная с версии 2.0.76.29;
  • Комплексная автоматизация, редакция 2, начиная с версии 2.4.13.149;
  • Зарплата и управление персоналом КОРП, редакция 3, начиная с версии 3.1.17.135.

Для выбора сертификата стороннего УЦ в окне мастера создания заявления на подключение в поле "Сертификат" выберите вариант Использовать существующий сертификат, укажите место хранения сертификата На локальном компьютере и нажмите кнопку ОК:


Хранение ключа в облаке возможно только для 1С-fresh.

В открывшемся окне «Сертификаты» укажите требуемый сертификат и нажмите кнопку Выбрать :


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

  • Симметричное шифрование - использует один и тот же ключ и для зашифрования, и для расшифрования;
  • Асимметричное шифрование - использует два разных ключа: один для зашифрования (который также называется открытым), другой для расшифрования (называется закрытым).

Создание временного сертификата

Пример создания временного сертификата для тестирования шифрования в 1С:
makecert.exe -r -pe -n CN="www.example.com" -ss my -sr currentuser
-sky exchange -sp "Microsoft Strong Cryptographic Provider"


2. Создание временного сертификата
Внимание: пароль на контейнер закрытого ключа при создании сертификата в данном случае не устанавливается!

Реализация шифрования

МенеджерКриптографии = Новый МенеджерКриптографии(ИмяКП, "", ТипКП);
ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов(
ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты,
РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС);
Сертификат = ХранилищеСертификатов.НайтиПоОтпечатку(Base64Значение(Отпечаток));

ЗашифрованныеДанные = МенеджерКриптографии.Зашифровать(ИмяВременногоФайла, Сертификат);

УдалитьФайлы(ИмяВременногоФайла);

Возврат Base64Строка(ЗашифрованныеДанные);

МенеджерКриптографии = Новый МенеджерКриптографии(ИмяКП, "", ТипКП);
МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = ПарольЗакрытогоКлюча;

РасшифрованныеДанные = МенеджерКриптографии.Расшифровать(Base64Значение(ЗашифрованныеДанные));

ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
РасшифрованныеДанные.Записать(ИмяВременногоФайла);
ЧтениеТекста = Новый ЧтениеТекста(ИмяВременногоФайла, "CESU-8");
СтрокаДанных = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

УдалитьФайлы(ИмяВременногоФайла);

Возврат СтрокаДанных;

В данной функции инициализируется менеджер криптографии и указывается пароль к контейнеру закрытого ключа. Далее происходит расшифровка зашифрованных данных. Результатом расшифрования являются двоичные данные, которые записываются в файл с кодировкой CESU-8 и считываются из него.

Добрый день! Пытаюсь подписать xml-файл созданным сертификатом, но никак не получается. Порядок действий был такой:

1. Выпустил собственный сертификат командой в PowerShell:


2. Скопировал в папку "Доверенные корневые центры сертификации" -> "Сертификаты"
3. В отладчике, в списке, полученном от МенеджерКриптографии нашел свой сертификат
4. Выбрав свой сертфикат, при попытке Подписать() получаю ошибку типа:
Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего.
Сертификат связан с модулем криптографии "Microsoft Software Key Storage Provider" с типом 0.

Код получения сертификатов и подписи с ИТС

Что делаю не правильно?


(1)
Мда. RTFM.
С чего вы вообще решили, что МенеджерКриптографии.Подписать выдаст вам подпись в формате xmldsig?
Это так не работает. Вот вообще.

Да собственно, все делаете не правильно.
Платформа не умеет подписывать в формате xmldsig.
Но в БСП есть внешняя компонента, которая умеет.

(4) собственно по этому и спрашиваю, что мат. часть по этому вопросу со стороны 1с освещена слабо, а пример с ИТС получается вообще не к этому относится.
Можете ссылку на описание ВК? Или хотя бы ее наименование?

(1)По поводу ошибки при подписи.

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

Specifies the name of the KSP or CSP that this cmdlet uses to create the certificate. See Cryptographic Providers for more information. Some acceptable values include:

Microsoft Software Key Storage Provider
Microsoft Smart Card Key Storage Provider
Microsoft Platform Crypto Provider
Microsoft Strong Cryptographic Provider
Microsoft Enhanced Cryptographic Provider v1.0
Microsoft Enhanced RSA and AES Cryptographic Provider
Microsoft Base Cryptographic Provider v1.0
The name of a third party KSP or CSP

У вас создался сертификат с провайдером Microsoft Software Key Storage Provider, а вы создаете менеджер криптографии для провайдера Microsoft Enhanced Cryptographic Provider v1.0, поэтому и ошибка.

(5) исходя из (4) текущему коду это исправление не поможет, верно?

(7)Да, так вы не подпишите.

Возьмите демо базу БСП и попробуйте в ней реализовать подпись, используя процедуры и функции общих модулей БСП.

(8) спасибо, буду пробовать. Видел этот метод в конфе, но не смог подумать, что он мне подойдёт. (8) попробовал, проблема с сертификатами.
Вопрос - делали ли уже такую процедуру сами? Если да, то сертификат самовыпущенный? Если да, то как его создавали? (10)Как-то пробовал, в тот раз не разобрался что передать, чтобы заработало. Больше не пробовал.
Но то что оно работает у других, это точно.
У меня есть сертификат крипто-про.
Самовыпущенные сертификаты не использовал. (12)пробовал , не получается, ошибки те же, т.к. код По сути тот же что и на итс

Значит, скорее всего, дело в сертификате - чем-то он не соответствует криптопровайдеру, о чем честно говорится в ошибке

(14) спасибо за ссылку, буду пробовать, обязательно отпишусь по результату

ключ сгенерился, но устанавливаться не хочет, скопировал во все места, куда просился, теперь такая беда:

но не могу допереть, как "Установить закрытый ключ" - во всех примерах там КриптоПро и VIPnet, все возможные действия для стандартной оснастки certmgr уже выполнил (добавил в доверенные, в личные, экспортировал и импортировал в локальный компьютер и личную учетную запись).

как "Установить закрытый ключ" - во всех примерах там КриптоПро и VIPnet 6. Для использования данного сертификата необходимо будет выдать права на закрытый ключ. (23) сходил, добавил для сертификата права всем пользователям - ничего не изменилось, та же ошибка ( В том числе и USR1CV8, или как там у вас называется пользователь, от имени которого запускается 1С?
А что показывает certmgr.msc в свойствах этого сертификата? Есть для него закрытый ключ или нет?

(25) да, для usr1cv8 тоже.

В свойствах закрытого ключа не нашёл - по картинками должен быть ключик на главной странице свойств и надпись. Но его нет (

Тогда результат из (22) закономерен - система не видит закрытого ключа и поэтому 1С никак не сможет ним работать.

Как минимум надо добиться, чтобы сертификат был связан с закрытым ключом. а потом, не исключено, снова вылезет ошибка из (1).

(27) не могу понять, как связать сертификат с закрытым ключом, и где его взять? (22) Картинка "на клиентском компьютере". Так Вы где подпись собираетесь ставить, &НаКлиенте или &НаСервере? (29) собираюсь на сервере, а картинка в рдп сеансе под админом (30) 1) Команда PowerShell добавит самоподписанный с закрытым ключом в личное текущего пользователя ОС - в хранилище админа.
New-SelfSignedCertificate -DnsName "www.mytest.com", "www.whatsthis.com" -Provider "Microsoft Enhanced Cryptographic Provider v1.0" -CertStoreLocation "cert:\CurrentUser\My"
2) Далее его нужно экспортировать с закрытым ключом. Win+R certmgr.msc
3) Потом certmgr.msc нужно запустить под тем пользователем, под которым сервер 1С работает как служба (например USR1CV8), и в личное хранилище этого юзера импортировать файл из шага-2 (30) У меня после того, как сертификат с закрытым ключом появился в личном хранилище сертификатов у пользователя USR1CV8 - начинает работать следующий код:

(22) Если Вы генерировали сертификат по инструкции через certreq.exe -new template.txt outcert.cer - то он должен появиться в остнастке

Win+R
mmc
Ctrl+M
Сертификаты
Учетной записи компьютера

Экспортируем из остнастки этот сертификат с закрытым ключом в файл (название файла задаем, чтобы не перепутать с outcert.cer, т.к. outcert.cer это просто открытый сертификат без закрытого ключа), закрываем консоль. Открываем консоль снова под пользователем USR1CV8 (можно создать ярлык на рабочем столе certmgr.msc и запускать его от имени пользователя USR1CV8) В консоли импортируем файл с закрытым ключом в личное хранилище пользователя USR1CV8.

После всего этого МенеджерКриптографии.Подписать - сможет подписать данным ключом &НаСервере.

Типовые ошибки при попытке создания запроса на сертификат в веб-интерфейсе сервиса подписи.

1. На сервисе подписи нет доступных провайдеров


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

2. Message: invalid_license MessageDetail: Превышено количество пользователей, разрешенных лицензией


Диагностика:
Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> SignServer-> Admins».

Пример:
CertificateRequestValidator Message: CertificateRequestValidator. Ошибка: invalid_license;
Описание: Превышено количество пользователей, разрешённых лицензией.;

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

Рекомендуемое решение:
- Выполнить командлет: Get-DssLicense -AssignedUsersInfo
- Если число пользователей, указанных в параметре "AssignedUsersNumber", равно или превышает число пользователей в параметре "TotalUsersNumberLimit" - ввести дополнительную лицензию на сервис подписи, в соответствие с руководством.

3. Message: An error has occured


Диагностика:
Ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> SignServer-> Admins».

Возможные причины возникновения ошибки:
- На сервере DSS не запущена служба "Крипто Про HSM 2.0";
- УЗ пула приложений сервиса подписи не добавлена в группу "Привилегированные пользователи КриптоПро HSM";
- Истек срок действия закрытого ключа сертификата доступа к сервисному провайдеру КриптоПро HSM.

Рекомендуемое решение:
- Запустить службу "Крипто Про HSM 2.0";
- Убедиться, что на сервере DSS создана группа пользователей "Привилегированные пользователи КриптоПро HSM" и что в данную группу добавлена УЗ пула приложений сервиса подписи;
- Протестировать срок действия закрытого ключа сертификата доступа к сервисному провайдеру КриптоПро HSM средствами КриптоПро CSP. Если срок действия закрытого ключа истек - перевыпустить сертификат доступа к сервисному провайдеру КриптоПро HSM, перенести его на сервер КриптоПро DSS и перезапустить службу "Крипто Про HSM 2.0".

4. Сервис подписи не настроен на взаимодействие ни с одним УЦ или нет ни одного обработчика УЦ, доступного через веб-интерфейс


Диагностика:
Ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> SignServer-> Admins».

А) Идентификатор УЦ: 1 Произошла ошибка при создании экземпляра обработчика УЦ: Exception occured while creating enroll with ID 1, Name Тестовый УЦ
System.ServiceModel.Security.SecurityNegotiationException: Не удалось установить безопасный канал для SSL/TLS с полномочиями "testuc".

В) Идентификатор УЦ: 1 Произошла ошибка при создании экземпляра обработчика УЦ: Exception occured while creating enroll with ID 1, Name Тестовый УЦ
System.InvalidOperationException: Сертификат оператора не найден в хранилище Локального компьютера либо недействителен. Отпечаток 56F8AA130B25C82173951E6F7C8C4E9B535904DB

Возможные причины возникновения ошибки:
- Не выполнена настройка для обеспечения взаимодействия DSS с УЦ;
- УЗ пула приложений сервиса подписи не выданы права на доступ к закрытому ключу сертификата привилегированного пользователя ЦР, указанного в настройках обработчика УЦ (OperatorCertThumbprint);
- Возникли проблемы на стороне самого УЦ (например, остановилась служба ЦР);
- В настройках обработчика УЦ указано некорректное имя ЦС (AuthorityName);
- В настройках обработчика УЦ указан отпечаток сертификата привилегированного пользователя ЦР, который не был установлен в хранилище "Личные" локального компьютера сервера DSS, с привязкой к закрытому ключу (OperatorCertThumbprint);
- В настройках обработчика УЦ указан некорректный адрес ЦР (CAServiceUrl);
- В настройках обработчика УЦ указан некорректный идентификатор папки ЦР (FolderId).

Рекомендуемое решение:
- Выполнить настройку обеспечения взаимодействия DSS c УЦ, в соответствие с руководством;
- Установить сертификат привилегированного пользователя ЦР, указанный в настройках обработчика УЦ (OperatorCertThumbprint), в хранилище "Личные" локального компьютера сервера DSS, с привязкой к закрытому ключу;
- Выдать УЗ пула приложений сервиса подписи права на доступ к закрытому ключу сертификата привилегированного пользователя ЦР, указанного в настройках обработчика УЦ (OperatorCertThumbprint);
- Указать в настройках обработчика УЦ корректные credentials-ы для подключения - сертификат привилегированного пользователя ЦР (OperatorCertThumbprint), адрес ЦР (CAServiceUrl), имя ЦС (AuthorityName), идентификатор папки ЦР (FolderId). Полный список параметров и их описание представлены в руководстве;
- Убедиться в том, что компоненты ЦР и ЦС функционируют в штатном режиме.

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