Почему находится сертификат КриптоПро, но отсутствуют корневые сертификаты и как это исправить?

Добрый день. Краткое расскажу что произошло.
С переходом всех сертификатов на ФНС на сервере перестали работать сертификаты. Они отображаются в сертификатах (cptools), но почему-то, судя по ошибкам, у сертификатов отсутствуют корневые сертификаты.

В итоге:
1. Есть флешка-носитель со всеми сертификатами.
2. В "контейнерах" (cptools) они отображаются (считыватель Aktiv Rutoken Lite)
некоторые данные тестирование контейнера

сертификат в контейнере
соответствует закрытому ключу да

цепочка сертификата проверена
сертификат в хранилище my


3. Есть установленный сертификат из контейнера и он ссылается на контейнер из флешки-носителя.
Некоторые логи сертификата

Встроенная лицензия : КриптоПро CSP
Ссылка на ключ : Есть
Контейнер : SCARD\rutoken_lt_######

Цепочка сертификатов: Успешно проверена.
641bebe16f541618854224.png


4. Через код (будет ниже) сертификат находится, но почему то не находит корневые сертификаты.

Вот PHP (7.2) код, который я использовал для тестирования:
$store = new CPStore();
        $store->Open(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY);
        $store = $store->get_Certificates();
        $thumbprint = 'sha1_key';
        $serts = $store->Find(CERTIFICATE_FIND_SHA1_HASH, $thumbprint, 0);

        if ($serts->Count()) {
            $sert = $serts->Item(1);
        } else {
            dd('not sert');
        }

        $signer = new CPSigner();
        $signer->set_Certificate($sert);
        $signedData = new CPSignedData();
        $signedData->set_ContentEncoding(BASE64_TO_BINARY);
        $signedData->set_Content(base64_encode(base64_decode('test')));

        $signedMessage = $signedData->SignCades($signer, CADES_BES, true, 0);   // <--- Вот тут и начинается проблема

        dd(str_replace(["\r\n", "\n", "\r"], '', $signedMessage));


Сертификат сам находится, но когда пытается добавить подпись к файлу, то ругается на отсутствие корневых сертификатов.
A certificate chain could not be built to a trusted root authority. (0x800B010A)


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

В дополнение хочу добавить:
Сервер на Debian, php - 7.3. ФНС и Мин.цифр сертификаты установлены.
  • Вопрос задан
  • 398 просмотров
Пригласить эксперта
Ответы на вопрос 1
CityCat4
@CityCat4 Куратор тега Цифровые сертификаты
//COPY01 EXEC PGM=IEBGENER
Ошибка certificate chain cannot be built - это однозначно отсутствие корневого сертификата для проверки текущего. Начинаем с простого - где в этом случае ищутся корневые сертификаты и какие сертификаты являются для проверяемого корневыми?
Если выпускающий сертификат - не корневой, то есть он сам кем-то еще выпускался, то цепочка будет строиться выше - до первого корневого сертификата и все они должны присутствовать в хранилище.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы