Сертификат не имеет связи с закрытым ключом ошибка при подписании файла

Обновлено: 06.07.2024

PCCERT_CONTEXT __fastcall Tcrtmgr_win::GetSignKey( AnsiString asGUID, HCRYPTPROV* phCryptProv )
AnsiString asContainerName;
int NumRows, err, i, rez = -1;
PCCERT_CONTEXT pCertContext = NULL;
CRYPT_SIGN_MESSAGE_PARA SigParams;

//HCRYPTPROV hProv;
DWORD dwKeySpec;
BOOL fCallerFreeProv;

// -------------
for( i=0; i < pCertList->Count; i++ )
if( AnsiString( ((ptCards_Store)(pCertList->Items[i]))->guid ) == asGUID )
rez = i;

if( rez != -1 )
asContainerName = AnsiString( ((ptCards_Store)(pCertList->Items[rez]))->conteiner );
>
else
return NULL;
>

pCertContext = GetCertContext( asGUID );

err = CryptFindCertificateKeyProvInfo( pCertContext, 0, NULL);

provInfo.dwFlags = 0;
provInfo.cProvParam = 0;
provInfo.rgProvParam = 0;
provInfo.dwKeySpec = AT_SIGNATURE;

CertSetCertificateContextProperty( pCertContext,
CERT_KEY_PROV_INFO_PROP_ID,
0,
&provInfo );
>


if( !CryptAcquireCertificatePrivateKey(
pCertContext,
CRYPT_ACQUIRE_COMPARE_KEY_FLAG | CRYPT_ACQUIRE_SILENT_FLAG,
NULL,
phCryptProv/*&hProv*/,
&dwKeySpec,
&fCallerFreeProv
))
err =GetLastError();
>

CertStore = New Capicom.Store
CertStore.Open
SertForSign = CertStore.Certificates(1)

DataForSign = New Capicom.SignedData
Signer = New Capicom.Signer

.
const BYTE* MessageArray[] = ;
DWORD MessageSizeArray[1];
MessageSizeArray[0] = iBufferSize;

SigParams.cbSize = sizeof(CRYPT_SIGN_MESSAGE_PARA);
SigParams.dwMsgEncodingType = PKCS_7_ASN_ENCODING | X509_ASN_ENCODING;
SigParams.pSigningCert = pCertContext;

// szOID_OIWSEC_sha1RSASign
// szOID_OIWSEC_sha1
// szOID_OIWSEC_sha
//
if( iSignMode == 0 )
SigParams.HashAlgorithm.pszObjId = szOID_CP_GOST_R3411_R3410;
if( iSignMode == 1 )
SigParams.HashAlgorithm.pszObjId = szOID_OIWSEC_sha1RSASign;

SigParams.HashAlgorithm.Parameters.cbData = NULL;
SigParams.cMsgCert = 0;
SigParams.rgpMsgCert = NULL;
SigParams.cAuthAttr = 0;
SigParams.dwInnerContentType = 0;
SigParams.cMsgCrl = 0;
SigParams.cUnauthAttr = 0;
SigParams.dwFlags = 0;
SigParams.pvHashAuxInfo = NULL;
SigParams.rgAuthAttr = NULL;

//--------------------------------------------------------------------
// With two calls to CryptSignMessage, sign the message.
// First, get the size of the output signed BLOB.

if(CryptSignMessage(
&SigParams, // Signature parameters
TRUE, // detached
1, // Number of messages
MessageArray, // Messages to be signed
MessageSizeArray, // Size of messages
chSignedData, // Buffer for signed message
pdwSigLen)) // Size of buffer
err= 1;
>
else
err = GetLastError();
>

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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



Для VIPNet CSP

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

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

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

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

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

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


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

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

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

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

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

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

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

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

Иногда во время установки сертификатов электронной цифровой подписи через КриптоПро после выбора ключевого контейнера возникает ошибка: «В контейнере закрытого ключа отсутствует открытый ключ шифрования». Ее устранение в большинстве случаев не требует обращения в службу поддержки пользователей: достаточно лишь следовать пошаговой инструкции установки в контейнер закрытого ключа подписи.

Причины возникновения ошибки

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

Свойства КриптоПро

Пошаговая инструкция установки личного сертификата

Чтобы установить личный сертификат, не записанный на ключевой носитель, нужно:

  • Запустить программу КриптоПро: «Пуск»/«Настройка»/«Панель управления»/«КриптоПро CSP».
  • Перейти через раздел «Сервис» во вкладку «Установить личный сертификат».

Установка Сертификата ЭЦП

  • Нажать «Далее».
  • Указать путь к закрытому ключу электронной цифровой подписи через кнопку «Обзор». Пользователь в открывшейся папке выбирает файл, заканчивающийся расширением .cer.
  • После этого пользователю предстоит нажать «Открыть».

Выбор Сертификата ЭЦП

Следующий шаг — это выбор ключевого контейнера. Пользователь должен:

  • В рабочем окне «Контейнер закрытого ключа» нажать «Обзор» и выбрать контейнер, соответствующий названию ЭЦП.

Обзор контейнеров ЭЦП

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

Затем нужно выбрать хранилище. Делает это так:

  • Пользователь нажимает «Обзор» и выбирает «Личное хранилище».

Выбор личного контейнера

  • После того как название хранилища отразится в соответствующей графе пользователь нажимает «Далее».

Выбор мастера импорта

  • После выбора контейнера для подтверждения установки нужно нажать «Готово».

Серт. в хранилище

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

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

Установка личного сертификата в КриптоПро версии 3.62 R2 и выше происходит иначе. В окне программы следует выбрать пункт «Установить» и подтвердить замену (если требуется). Если запроса на замену не вышло, нужно открыть вкладку «Сертификат для просмотра» и выбрать «Свойства».

Установка Крипто Про новой версии

В новом окне выбрать пункт «Установить».

Установка Сертификата в контейнер

После этого запустится «Мастер установки», в котором нужно нажать кнопку «Далее». После этого следует выбрать пункт «Поместить все сертификаты в хранилище». Для выбора хранилища нужно нажать «Обзор».

Обзор хранилищ

Для дальнейшей установки нужно выбрать «Личное хранилище».

Обзор хранилищ

Импорт завершен

Ошибка отсутствия ключа электронной цифровой подписи в контейнера возникает обычно из-за отсутствия соответствующего сертификата. Решить проблему просто: установить личный сертификат и перезагрузить ПК. Способ установки зависит от версии используемого программного обеспечения КриптоПро и занимает всего несколько минут. Если после замены или установки открытого ключа проблема не исчезла, лучше обратиться в сервисный центр для перевыпуска электронной подписи.

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

Как выглядит ЭЦП


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

Какие виды ошибок ЭЦП бывают

Среди наиболее часто встречающихся ошибок в процессе подписания электронных документов электронной подписью выделяют три ключевых блока:

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

Проблема с подписанием ЭПЦ

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

  • Закрытый ключ со съемного носителя (диска, флешки, Токена), не соответствует имеющемуся ключу открытого сертификата. Банальный человеческий фактор выбора не того носителя информации с ЭЦП. Если же «правильный» ключ утерян, придется обращаться в Удостоверяющий центр для перевыпуска.
  • Недействительный сертификат. Чтобы устранить подобную ошибку потребуется переустановить открытый сертификат. Важно учитывать требования криптопровайдера (инструкции по необходимым действиям) для установки открытых сертификатов.
  • Сертификат подписи определяется как не проверенный. Потребуется выполнить переустановку корневого сертификата, сформировавшего ЭП Удостоверяющего центра.
  • Закончился срок действия криптопровайдера. Необходимо получить новый лицензионный ключ, позволяющий работать с программным обеспечением криптопровайдера. Информация запрашивается через УЦ, либо владельца ПО.
  • Не виден сертификат на носителе. Помогает простая перезагрузка компьютера для устранения ошибка генерации.
  • Алгоритм сертификата ЭЦП не поддерживается. Подобная ошибка может возникать при подписании электронной отчетности в налоговую. Потребуется переустановить КриптоПро CSP и проверить его на совместительство с имеющейся у вас на компьютере операционной системой.

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

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

Обычно для ее исправления требуются такие действия:

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

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

Проблема с сертификатом

Распространенным явлением во время подписания электронных документов ЭЦП является получение уведомления, что системе не удалось получить доступ к сертификатам, пригодным для формирования подписи.

Здесь причины возникновения неисправности могут быть такими:

Внимательно читайте природу ошибки, что выдает система. Обычно это ключ к дальнейшему направлению поиска источника проблемы и ее устранению.

Что делать если не найден сертификат или не верен

Когда сертификат отсутствует в списке «Ваши Сертификаты», проблема может оказаться в отсутствии коренного сертификата УЦ.

Для устранения этой проблемы необходимо:

Раздел сертификаты

  • потребуется открыть не отображенный во вкладке сертификат и просмотреть его «Путь сертификации»;
  • тут отображаются все цепочки сертификатов в порядке ранжирования. Важно чтобы напротив какого-то из них не стоял желтый, либо красный значок предупреждения. Если подобное присутствует – нажмите на сам сертификат и ознакомьтесь с ошибкой, что выдаст система;
  • в зависимости от причины (обычно это окончание действия сертификата, либо не верифицирован) выполните ее устранение.

Чтобы устранить ошибку и перезагрузить отозванный сертификат потребуется выполнить несколько не сложных действий:

  • в окне «Свойства браузера» откройте личный сертификат. Попасть туда можно через «Поиск» меню «Пуск». В открытом окошке ищите вкладку «Содержание», дальше вкладку «Сертификаты»;
  • после этого во вкладке «Состав» потребуется выбрать позицию «Точки распространения списков отзывов»;
  • в следующем блоке под названием «Имя точки распространения» необходимо выполнить копирование ссылки загрузки файла списка отзывов;
  • переходя по указанной ссылке необходимо скачать и установить файл списка отзывов (CRL);
  • дальше переходим по подсказкам «Мастера импорта сертификатов».

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

  1. На носителе отсутствует драйвер, либо он установлен не корректно. Необходимо скачать последнюю версию драйвера с официального источника и установите его. Можно проверить работоспособность съемного носителя на другом ПК. В этом случае, если другой ПК нормально работает с носителем ЭЦП, переустановите драйверы на первом компьютере.
  2. Система долго распознает носитель ЭЦП. Тут проблема в операционной системе. Ее потребуется обновить до минимального уровня, требуемого для работы с ЭЦП.
  3. USB-порт работает не корректно. Попробуйте подсоединить Токен (флешку) через другой порт, либо на другом ПК, чтобы убедиться, что проблема не в носителе. Выполните перезагрузку компьютера.
  4. Если Токин (флешка) не открывается ни на одном компьютере, значит проблема в носителе. Когда ключ был записан в единственном экземпляре на этот носитель – потребуется обращаться в УЦ для перевыпуска ЭЦП.

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

Проблемы при авторизации

Часто с подобными неприятностями сталкиваются владельцы ЭЦП, пытающиеся пройти регистрацию, либо авторизацию на различных электронных торговых площадках. Пользователю появляется уведомление, что его подпись не авторизирована.

Обычно проблема кроется:

На различных ресурсах процесс регистрации (авторизации) может существенно отличаться, иметь определенные ограничения, а также блокироваться защитным ПО. Поэтому перед началом процедуры не поленитесь ознакомиться с соответствующей инструкцией и правилами.

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

  1. Необходимости присоединиться к регламенту. Система не даст возможность полноценно работать, если вы не согласитесь с ее условиями.
  2. Невозможность загрузить файл (файлы). Обычно это ошибка превышения размера информации, что допустима для загрузки. Просто смените формат разрешения файла, чтобы уменьшить его размер.
  3. Требование использовать определенный браузер (определенную версию браузера). Это системные требования владельца площадки, которые необходимо соблюдать.
  4. Проблемы со считыванием сертификатов. Потребуется проверить не просрочены ли ваши сертификаты, а также все ли они установлены на ПК.
Что значит er 10002 неопределенная ошибка при проверке ЭЦП, что делать?

Возможно не прошла расшифровка файла ключа. Перезагрузите компьютер. Проверьте, отображается ли съемный носитель ключа ЭЦП, наличие и корректность отображения сертификатов, а также соответствие их (должен быть одинаковый владелец).

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

Несоответствие программного продукта операционной системы и съемного носителя (флешки), либо повреждение флешки. Устраняется путем обновления операционной системы до минимально необходимой версии. В случае обнаружения повреждения флешки – может потребоваться перевыпуск ЭЦП удостоверяющим центром.

Потребуется выполнить определенные настройки вашего браузера и добавить программу в меню веб-обозревателя, а также загрузить недостающие сертификаты ЭЦП.

Хранение сертификатов в Windows (от 7 версии) осуществляется по адресу: C:UsersПОЛЬЗОВАТЕЛЬAppDataRoamingMicrosoftSystemCertificates

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