Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Chemannnnn  
#1 Оставлено : 23 мая 2022 г. 16:01:25(UTC)
Chemannnnn

Статус: Участник

Группы: Участники
Зарегистрирован: 29.11.2021(UTC)
Сообщений: 21

Сказал(а) «Спасибо»: 10 раз
Поблагодарили: 2 раз в 1 постах
Здравствуйте. Не получается заменить сертификат в контейнере закрытого ключа.
Ситуация следующая - есть сертификат, который нужно использовать для подписания данных (издан внешней организацией).
В панели КриптоПро JCP 2.0.40035 (Клиентская ОС - Windows 10, Тип лицензии: Серверная, подпись и шифрование, по кол-ву ядер и времени действия неограниченная) на закладке "Хранилища ключей и сертификатов" создаю контейнер (атрибуты субъекта сертификата беру из уже имеющегося сертификата, которым нужно подписывать данные). Контейнер создаётся с само подписанным сертификатом, но при попытке заменить его в контейнере на уже имеющийся (кнопка "Добавить", затем выбираю имеющийся сертификат) получаю ошибку "Невозможно записать сертификат в хранилище".
В окне лога Контрольной панели следующий текст:

Имеющийся сертификат (который хочу добавить в контейнер закрытого ключа) в PEM формате (-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----). Конвертировал его в DER (.crt) следующей командой:
Код:
openssl x509 -outform der -in certificate.pem -out certificate.crt

crt файл открывается нормально, значения атрибутов отображаются.
Цель - использовать имеющийся сертификат для подписания. С самоподписанным сертификатом (который создавал в Контрольной панели JCP вместе с контейнером закрытого ключа) подписание работает. Повторюсь, проблема в том, чтобы поместить в контейнер закрытого ключа имеющийся сертификат (или создать контейнер ключа с этим уже имеющимся сертификатом).
Что именно делаю неправильно и как решить эту задачу?
Offline Санчир Момолдаев  
#2 Оставлено : 24 мая 2022 г. 9:24:13(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,193
Российская Федерация

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 274 раз в 254 постах
Добрый день.
нужен закрытый ключ от этого сертификата, т.к. каждому контейнеру должен соответствовать свой сертификат
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
Chemannnnn оставлено 24.05.2022(UTC)
Offline two_oceans  
#3 Оставлено : 25 мая 2022 г. 5:35:24(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Добрый день. Дополню ответ:
Цитата:
Не получается заменить сертификат в контейнере закрытого ключа.
1) штатного API по замене сертификата в контейнере нет. Точнее, нет функционала удаления сертификата из контейнера, а функция добавления вываливается в ошибку, когда сертификат для ключа обмена (или ключа подписи) уже есть в контейнере. Распутав ASN.1 в header.key можно относительно легко (хотя бы по размеру элемента) найти сертификат, однако просто вырезать эти байты и пересчитать длину оставшихся элементов нельзя, там в конце еще и 2-4 байта контрольной суммы указаны. При неверной контрольной сумме криптопровайдер вообще отказывается работать с контейнером - типа контейнер поврежден. Другими словами, пока не получите верную сумму, вручную также нельзя удалить сертификат.

Следовательно, основной способ: создать контейнер без сертификата и его сохранить, уже потом экспериментировать с созданием сертификата - самоподписанного или выданного внешней организацией.
Цитата:
создаю контейнер (атрибуты субъекта сертификата беру из уже имеющегося сертификата, которым нужно подписывать данные).
2) в формулировке вопроса вообще какая-то неразбериха: суть в том, что в контейнере достаточно информации, чтобы воссоздать ключевую пару целиком (и закрытый ключ и открытый ключ), но нет информации о том, кому он принадлежит. Для проверки правильности пароля или соответствия сертификата контейнеру в открытом виде также указаны первые 8 байт открытого ключа. В сертификате же указаны только открытый ключ и информация кому он принадлежит, закрытого ключа нет. Вся схема построена на том, что по открытому ключу (в случае гост-2012 одной координате точки эллиптической кривой) нельзя в разумные сроки (сравнимые со сроком действия сертификата) восстановить закрытый (в котором две координаты точки эллиптической кривой).

Следовательно, когда создаете контейнер, указав только данные субъекта, будет сгенерирована новая ключевая пара. Даже если в этот момент не добавить в новый контейнер сертификат, 8 первые байт открытого ключа почти наверняка будут отличаться и выйдет ошибка о несоответствии сертификата и контейнера. Итого: сгенерировали новый контейнер - получаете новый сертификат.

С другой стороны, если экспортировали и закрытый и открытый ключи и сертификат в файл PFX/P12, его можно восстановить в полноценный контейнер с той же ключевой парой и подписывать существующим ключом (или как говорят упрощенно тем же сертификатом).

Отредактировано пользователем 25 мая 2022 г. 5:37:58(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
Chemannnnn оставлено 25.05.2022(UTC)
Offline Chemannnnn  
#4 Оставлено : 25 мая 2022 г. 13:05:37(UTC)
Chemannnnn

Статус: Участник

Группы: Участники
Зарегистрирован: 29.11.2021(UTC)
Сообщений: 21

Сказал(а) «Спасибо»: 10 раз
Поблагодарили: 2 раз в 1 постах
Благодарю за ответы, ясность появилась.
Нашли архив с ключевым контейнером и получилось добавить в него пользовательский сертификат в Контрольной панели JCP на закладке "Хранилища ключей и сертификатов".
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.