Тип сертификата не имеет параметра ссылающегося на закрытый ключ 1с

Обновлено: 07.07.2024

При возникновении ошибки "Сертификат не имеет связи с закрытым ключом" необходимо выполнить проверку сертификата электронной подписи.

Алгоритм проверки электронной подписи:

В программном продукте 1С необходимо

1. перейти в раздел "Администрирование"

2. "Обмен электронными документами"

3. "Настройка электронной подписи и шифрования"

4. На вкладке "Сертификаты" открыть используемый сертификат

5. Нажать на кнопку "Проверить"


6. Ввести пароль закрытой части ключа и нажать "Проверить"

! Обращаем Ваше внимание, что программа сама увеличит количество * в поле "Пароль:" до 16 при проверке. Данное поведение является штатным и выступает дополнительной защитой конфиденциальных данных в виде количества символов в пароле. Проверка будет осуществлена на основании введенных Вами данных .


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

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

Решение: связать сертификат с закрытом ключом.

Д ля этого необходимо:

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

2. Запустить криптопровайдер и выполнить установку сертификата.



Для VIPNet CSP

В окне VIPNet CSP нажать "Установить сертификат"

В открывшемся окне необходимо выбрать директорию, куда был сохранен сертификат, выбрать сохраненный ранее сертификат и нажать "Открыть".

В открывшемся мастере установки сертификатов, нажать "Далее"

При выборе хранилища необходимо выбрать "Текущий пользователь" и нажать "Далее"

В следующем окне необходимо выбрать "Найти контейнер с закрытым ключом" и нажать "Далее".

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


Для КриптоПро CSP

Запустить КриптоПро CSP. Для этого необходимо перейти в Пуск - Панель управления - КриптоПро CSP

В открывшемся окне криптопровайдера перейти на вкладку "Сервис" и нажать "Установить личный сертификат".

В следующем окне необходимо выбрать директорию расположения файла сертификата нажав кнопку "Обзор"

Указать директорию, в которую ранее был сохранён сертификат и нажать "Открыть".

В следующем окне мастера установки сертификатов поставить галочку "Найти контейнер автоматический". Контейнер должен определиться в окне ниже. Если автоматический не удалось найти контейнер необходимо нажать "Обзор" и самостоятельно указать контейнер. Затем нажать Далее.

Затем необходимо поставить галочку "Установить сертификат (цепочку сертификатов) в контейнер", нажать "Далее" и завершить установку.

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

У данной ошибки имеется два сценария воспроизведения:

1. При подписании электронных документов.

При возникновении ошибки "Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего. Сертификат связан с модулем криптографии "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" с типом 75.." необходимо выполнить проверку сертификата электронной подписи.

Алгоритм проверки электронной подписи:

В программном продукте 1С необходимо

- перейти в раздел "Администрирование" - "Обмен электронными документами" - "Настройка электронной подписи и шифрования".

- На вкладке "Сертификаты" открыть используемый сертификат.

- Убедиться, что в поле программа установлено значение "КриптоПро CSP (ГОСТ 2012)".

- Нажать на кнопку "Проверить".

СертификатСвязанСМодулемКриптографииСТипом75Рис.1.jpg

- Ввести пароль закрытой части ключа и нажать "Проверить".

СертификатСвязанСМодулемКриптографииСТипом75Рис.2.jpg

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

СертификатСвязанСМодулемКриптографииСТипом75Рис.3.jpg

Если в технической информации об ошибке указано "Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего. Сертификат связан с модулем криптографии "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" с типом 75.." необходимо перепривязать сертификат к контейнеру закрытого ключа (см. ниже в разделе «Решение»).

СертификатСвязанСМодулемКриптографииСТипом75Рис.4.jpg

2. При добавлении нового сертификата в настройки электронной подписи и шифрования.

Воспроизведение: Перейти в раздел Администрирование - Обмен электронными документами - Настройки электронной подписи и шифрования, во вкладке "Сертификаты" нажать "Добавить" и во всплывающем меню выбрать "Из установленных на компьютере".

СертификатСвязанСМодулемКриптографииСТипом75Рис.5.jpg

СертификатСвязанСМодулемКриптографииСТипом75Рис.6.jpg

В открывшемся окне необходимо выбрать актуальный сертификат и нажать "Далее".

В следующем окне добавления сертификата необходимо ввести пароль и нажать "Добавить".

СертификатСвязанСМодулемКриптографииСТипом75Рис.7.jpg

Далее возможно возникновение ошибки "Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего. Сертификат связан с модулем криптографии "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" с типом 75.".

СертификатСвязанСМодулемКриптографииСТипом75Рис.8.jpg

В случае её возникновения в предыдущем окне добавления сертификата необходимо нажать на кнопку "Показать данные сертификата, которые сохраняются в файле". Данная кнопка визуализирована в виде иконки сертификата.

СертификатСвязанСМодулемКриптографииСТипом75Рис.9.jpg

И в открывшемся окне нажать "Сохранить в файл. " и выполнить сохранение сертификата в любую доступную директорию компьютера и перейти к решению (см. ниже).

СертификатСвязанСМодулемКриптографииСТипом75Рис.10.jpg

Для устранения ошибки "Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего. Сертификат связан с модулем криптографии "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" с типом 75." необходимо заново связать сертификат с закрытым ключом.

Запустить КриптоПро CSP. Для этого необходимо перейти в Пуск - Панель управления - КриптоПро CSP

СертификатСвязанСМодулемКриптографииСТипом75Рис.11.jpg

В открывшемся окне криптопровайдера перейти на вкладку "Сервис" и нажать "Установить личный сертификат".

СертификатСвязанСМодулемКриптографииСТипом75Рис.12.jpg

В следующем окне необходимо выбрать директорию расположения файла сертификата нажав кнопку "Обзор".

СертификатСвязанСМодулемКриптографииСТипом75Рис.13.jpg

Указать директорию, в которую ранее был сохранён сертификат и нажать "Открыть".

СертификатСвязанСМодулемКриптографииСТипом75Рис.14.jpg

В следующем окне мастера установки сертификатов поставить галочку "Найти контейнер автоматически". Контейнер должен определиться в окне ниже. Если найти контейнер автоматически не удалось, необходимо нажать "Обзор" и самостоятельно указать контейнер. Затем необходимо нажать "Далее".

СертификатСвязанСМодулемКриптографииСТипом75Рис.15.jpg

После необходимо поставить галочку "Установить сертификат (цепочку сертификатов) в контейнер”. Затем нажать "Далее" и завершить установку.

СертификатСвязанСМодулемКриптографииСТипом75Рис.16.jpg

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

Добрый день! Пытаюсь подписать 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). Полный список параметров и их описание представлены в руководстве;
- Убедиться в том, что компоненты ЦР и ЦС функционируют в штатном режиме.

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