Электронная подпись
Сообщение «При выборе сертификата произошла ошибка. Не удалось найти закрытый ключ сертификата, причина -2146893805» может возникать в любой программе при обращении к ключевому контейнеру. Вам необходимо:
- Проверить, вставлен ли ключевой носитель.
- Убедиться, что сертификат установлен на рабочем месте.
- Настроить рабочее место при помощи «Мастера настройки».
- Проверить версию «КриптоПро CSP». Необходимо открыть программу «КриптоПро CSP» и проверить строку «Версия продукта». Версия должна быть не ниже 4.0. Для Windows 11 – 5.0.12000 или выше. При необходимости установить нужную версию.
- Воспользоваться другим браузером.
Если сообщение возникло:
В «Онлайн-Спринтере» при отправке отчета
Необходимо убедиться, что ФИО подписанта в отчете и сертификате, по которому вы вошли в «Онлайн-Спринтер», посимвольно и с учетом регистра совпадают, нет лишних пробелов или латинских символов. Если не совпадают, внести изменения в отчет, затем нажать «Сохранить».
В «Референте» в «Диагностике рабочего места»
Необходимо:
- Удалить системный ящик:
- Зайти в меню «Параметры» — «Настройки ящиков».
- Выбрать нужный ящик и нажать «Удалить ящик».
- Нажать «Ок».
- Добавить системный ящик:
- Зайти в меню «Параметры» — «Настройки ящиков».
- Нажать «Загрузить настройки».
- Выбрать вариант «Настройки будут получены от сервера специализированного оператора связи по защищенному протоколу HTTPS».
- Выбрать личный сертификат для ЭДО той организации, для которой требуется создать ящик – «Далее» — если программа предложить установить корневые сертификаты, нажать «Да» – «Готово».
- Нажать «Ок».
Помогла ли статья решить вопрос?
Да Нет
Благодарим за отзыв!
Отправить
Спасибо, что сообщили нам!
Отправить
Спасибо, что сообщили нам!
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Ошибка: «Не удается найти сертификат и закрытый ключ для расшифровки. (0x8009200C)»
VladKilin |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 3 раз |
При расшифровке документа в логах КриптоПРО CSP 5 получаем ошибку {«message»:»Не удается найти сертификат и закрытый ключ для расшифровки. (0x8009200C)» |
|
|
nickm |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 312 раз |
Можно предположить, что ожидается др. сертификат для расшифровки сообщения. Но, тут скорее люди близкие к разработке подскажут, т.к., полагаю, тут не в СКЗИ дело. |
|
|
VladKilin |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 3 раз |
Да в принципе можно предположить, что под иной КЭП зашифрован файл, но не в данном случае. |
|
|
Андрей * |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
Автор: VladKilin Да в принципе можно предположить, что под иной КЭП зашифрован файл, но не в данном случае. а сам зашифрованный файл приложите, посмотрим, правда ли это. |
Техническую поддержку оказываем тут |
|
|
WWW |
Андрей * |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
извлёк зашифрованные данные из log, Требуется сертификат с серийным номером: на снимке же у Вас совсем другой серийный номер: |
Техническую поддержку оказываем тут |
|
|
WWW |
|
nickm
оставлено 18.05.2023(UTC), VladKilin оставлено 19.05.2023(UTC) |
VladKilin |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 3 раз |
Спасибо больше за рабзбор. Подскажите как вы вытащили зашифрованный файл из данного лога? На будущее так скажем, чтобы можно было так же проверить данные. |
|
|
Андрей * |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
Автор: VladKilin Спасибо больше за рабзбор. Подскажите как вы вытащили зашифрованный файл из данного лога? На будущее так скажем, чтобы можно было так же проверить данные. В логе перед текстом ошибки смотреть: Цитата: «method»:»Decrypt«,»params»:[{«type»:»string»,»value»:»данные в base64
|
Техническую поддержку оказываем тут |
|
|
WWW |
|
VladKilin
оставлено 19.05.2023(UTC) |
VladKilin |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 3 раз |
А как его потом в удобоворимый вид привести чтобы увидеть серийный номер, т.к. если переводить допустим на base64.ru там такого не увидишь |
|
|
Андрей * |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
Автор: VladKilin А как его потом в удобоворимый вид привести чтобы увидеть серийный номер, т.к. если переводить допустим на base64.ru там такого не увидишь нет, необходимо декодировать и записать в файл, далее у меня такая под win, текстовым отчётом сообщает: |
Техническую поддержку оказываем тут |
|
|
WWW |
|
VladKilin
оставлено 19.05.2023(UTC) |
VladKilin |
|
Статус: Новичок Группы: Участники Сказал(а) «Спасибо»: 3 раз |
Понял, спасибо большое. Разобрался. |
|
|
Пользователи, просматривающие эту тему |
Guest (2) |
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Ошибка: «Не удается найти сертификат и закрытый ключ для расшифровки. (0x8009200C)»
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Из нашей статьи вы узнаете:
ЭЦП — довольно сложный цифровой продукт, обращение с которым в определенных ситуациях может потребовать некоторых навыков и знаний. Например, в ходе установки сертификатов ЭП посредством «КриптоПро» после выбора соответствующего ключевого контейнера нередко выдаются неприятные сообщения об ошибке вследствие отсутствия открытого шифровочного ключа, который необходим для обеспечения информационной безопасности, без чего система не будет принимать ЭЦП.
Такую ошибку несложно устранить без вызова специалиста или обращения в службу поддержки. Алгоритм действий, направленных на решение этой проблемы, приводится ниже.
Что может послужить причиной такой ошибки
Всплывающее окно со злополучным сообщением об ошибке появляется на экранах пользователей в тех случаях, если система не смогла обнаружить соответствующий ключ на носителе. Такая ситуация происходит при следующих действиях пользователей:
- установка сертификата впервые;
- экспортирование данных на внешний носитель;
- попытка просмотра ключей в контейнерах ключей;
- загрузка информации на компьютер извне.
В целях устранения ошибки обычно бывает достаточно произвести корректную ручную переустановку сертификата.
Решение ошибки: отсутствие электронного сертификата в контейнере закрытого ключа
Для начала запускаем «КриптоПро» нажатием кнопки «Пуск». Затем выбираем «Настройку», в возникающем на мониторе окне заходим в опцию панели управления, далее «сервис – установить личный сертификат».
Далее, через кнопку «обзор» указываем путь, где сохранен открытый ключ – файл с расширением *.cert или *.crt
Жмём «Далее», в мастере установки сертификата мы увидим путь, который указывали до нашего сертификата.
Нам отображается информация, содержащаяся в открытом ключе на пользователя, жмём «далее»
В следующем окне можно воспользоваться двумя путями поиска нужного контейнера закрытого ключа:
- «найти контейнер автоматически
- вручную через «обзор»
В первом случае КриптоПро на основе данных из открытого ключа подберет закрытый, в случае с ручным поиском нужно будет знать название закрытого ключа, чтобы выбрать его для установки
Самый простой вариант выбрать автоматический поиск, затем после «обнаружения» необходимого контейнера, мы увидим заполненную строчку с его именем и после жмём «Далее»
Личный сертификат пользователя всегда устанавливается в хранилище «Личное», можно выбрать как вручную, так и КриптоПро может сделать это за вас по умолчанию, затем подтверждаем установку цепочки сертификатов и жмём «Далее»
>
В случае успешной установки КриптоПро выдаст окно с информацией об окончании процедуры и жмём «Готово»
Затем появится окно с подтверждением данной операции, жмём «ДА»
В следующем окне увидим информацию о том, что процесс окончен успешно. Сертификат установлен в контейнер закрытого ключа.
Особенности версий КриптоПро
С января 2019 года квалифицированные сертификаты могут выпускаться только по ГОСТ 2012, выпуск по другому ГОСТу прекращен. Мы об этом писали ранее в статье. Важно помнить, что версии криптопро на ГОСТ 2012 работают только с версии 4.0 и выше. Все старые версии КриптоПро, для нормальной работы, потребуется обновить или заменить на актуальную. Сделать это нужно не позднее 31 декабря 2019 года.
I work in company with many servers and Pcs for developers. Servers are win2003, PC developers Windows XP.
In a server Win2003 named preiis01, in preproduction environment, other people in company install a client certificate using any other user (domainCompanyadminsystems) for logging in server preiis01.
Anyone admin uses the user «domainCompanyadminsystems» for log in server preiis01 (using Terminal Server, Remote Desktop for Windows XP).
the admin user is domainCompanyadminsystems», which installs certificate.
Admin user install it like this:
Session login like «domainCompanyadminsystems»
Certificate is PFX file. Do Install PFX and using Wizard. The key private not check for export.
Input the password and install.
There is an application Web which AppPool Identity is: NETWORK SERVICE account.
web server is IIS 6.0.
in preiis01,
That admin user executes mmc -> Snap in -> Certificates for Local Machine. In node -> Personal -> Certificates, he had seen the client certificate:
Issued To ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1
Issued By FNMT Clase 2 CA
In properties of certificate, the thumbprint: «93 bc a4 ad 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6 c4 13»
That admin user executes this commands:
winhttpcertcfg.exe LOCAL_MACHINEMy -s «ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1» -g -a «NETWORK SERVICE»
Result is:
Matching certificate:
CN=ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1
OU=703015476
OU=FNMT Clase 2 CA
O=FNMT
C=ES
Granting private key access for
account: NT AUTHORITYNETWORK SERVICE
Now, admin user executes this command:
winhttpcertcfg.exe -l -c LOCAL_MACHINEMy -s «ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1»
The result is:
Matching certificate:
CN=ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1
OU=700012476
OU=FNMT Clase 2 CA
O=FNMT
C=ES
Additional accounts and groups with
access to the private key include:
domainCompanyadminsystems NT
AUTHORITYSYSTEM
BUILTINAdministrators NT
AUTHORITYNETWORK SERVICE
NOw, in an aspx page in application web in server Win2003, IIS 6.0, I have this code:
NOte: value for X509Certificate2.HasPrivateKeyAccess() is NO (false) for «ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1» certificate.
ASP.NET application executes using the identity :: NT AUTHORITYNETWORK SERVICE
lbInfo.Text += "<br/><br/>ASP.NET application executes using the identity :: <b>" + WindowsIdentity.GetCurrent().Name + "</b><br>";
var store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
Certificates = store.Certificates;
repeater1.DataSource = Certificates;
repeater1.DataBind();
var nombreCertificado = "ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1";
store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, nombreCertificado, false);
if (col.Count > 0)
{
X509Certificate2 certificate = col[0];
store.Close();
Message.Text = "Certificado " + nombreCertificado + " encontrado en " + StoreLocation.LocalMachine;
FirmarConCertificado(nombreCertificado, certificate);
}
else
{
store.Close();
Message.Text = "El certificado " + nombreCertificado + " no esta instalado en la máquina";
}
public void FirmarConCertificado(string nombreCertificado, X509Certificate2 certificate)
{
try
{
var mensaje = "Datos de prueba";
System.Text.Encoding enc = System.Text.Encoding.Default;
byte[] data = enc.GetBytes(mensaje);
var contentInfo = new System.Security.Cryptography.Pkcs.ContentInfo(data);
var signedCms = new System.Security.Cryptography.Pkcs.SignedCms(contentInfo, true);
var cmsSigner = new System.Security.Cryptography.Pkcs.CmsSigner(certificate);
// Sign the CMS/PKCS #7 message
signedCms.ComputeSignature(cmsSigner);
// Encode the CMS/PKCS #7 message
var ret = Convert.ToBase64String(signedCms.Encode());
Message.Text += "Firmado con Certificado " + nombreCertificado + " encontrado en " + StoreLocation.LocalMachine;
}
catch (Exception ex)
{
Message.Text = "Error al firmar con certificado: " + ex.ToString();
Message.Text += "<br /><br />InnerException: " + ex.InnerException;
}
}
The code fails for me, and I get this error: Cannot find the certificate and private key for decryption.
Error line is:signedCms.ComputeSignature(cmsSigner);
Error al firmar con certificado:
System.Security.Cryptography.CryptographicException:
Cannot find the certificate and
private key for decryption.at
System.Security.Cryptography.Pkcs.PkcsUtils.CreateSignerEncodeInfo(CmsSigner
signer, Boolean silent) at
System.Security.Cryptography.Pkcs.SignedCms.Sign(CmsSigner
signer, Boolean silent) at
System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner
signer, Boolean silent) at
System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner
signer) at
ASP.dgsfp_test_testcert_aspx.FirmarConCertificado(String
nombreCertificado, X509Certificate2
certificate) in
c:CompanyAppTestTestCert.aspx:line
242
Then, the admin user (I remember, who install the certificate) executes this commands:
FindPrivateKey My LocalMachine -t «93
bc a4 ad 58 c9 3c af 8b eb 0b 2f 86 c7
9d 81 70 a6 c4 13» –cFindPrivateKey
My LocalMachine -n «ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1» –aFindPrivateKey My LocalMachine -n
«CN=ENTIDAD COMPANY INSURE SA — CIF A93 — NOMBRE SURNAME1 NAME1»
–a
The result for all 3 commands is the same:
FindPrivateKey helps user to find the
location of the Private Key file of a
X.50 9 Certificate.Usage: FindPrivateKey [{ {-n } | {-t }
} [-f | -d | -a]]subject name of the
certificatethumbprint of the
certificate (use certmgr.exe to get
it)-f output file name only
-d output directory only
-a output absolute file
name e.g. FindPrivateKey My
CurrentUser -n «CN=John Doe»e.g. FindPrivateKey My LocalMachine -t
«03 33 98 63 d0 47 e7 48 71 33 62 64
76 5 c 4c 9d 42 1d 6b 52» -c
FindPrivateKey don’t get anything, but winhttpcertcfg.exe -l works fine (matching certificate)
We have given privileges to the Network Service user using the winhttpcertcfg.exe tool, and in code ASP.NET (execute under Network Service account) the certificate is found. But fails when sign using certificate.
If someone could give us some information about, or suggestions
update:
User in domain «domainCompanyPre_Certificado» install Certificate in Store Local Machine.
domainCompanyPre_Certificado is Administrator, in IIS_WPG group, has Local Policies: “Log on as Service“
I configure AppPool Identity in IIS 6.0 for : domainCompanyPre_Certificado
ASP.NET application executes using the identity :: domainCompanyPre_Certificado
I recycle AppPool and execute application, I get System.Security.Cryptography.CryptographicException: Cannot find the certificate and private key for decryption
If I test again, log in session in server IIS, using domainCompanyPre_Certificado user, I call page in ASP.NET application and all is OK.
(note: log in server IIS using Terminal Server)
But if log off session in server IIS (user: domainCompanyPre_Certificado), I get the same error:
System.Security.Cryptography.CryptographicException: Cannot find the certificate and private key for decryption
Any suggestions ??
igorkatamaranov |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 3 раз |
Добрый вечер! Столкнулся с проблемой расшифровки письма. |
|
|
Андрей * |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
Здравствуйте. //или обращаетесь через плагин и он использует сертификат из контейнера… ? Отредактировано пользователем 29 апреля 2021 г. 21:29:22(UTC) |
Техническую поддержку оказываем тут |
|
|
WWW |
igorkatamaranov |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 3 раз |
Автор: Андрей * Здравствуйте. //или обращаетесь через плагин и он использует сертификат из контейнера… ? да, серт установлен и имеет ссылку на закрытый ключ Отредактировано пользователем 30 апреля 2021 г. 12:38:41(UTC) |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.