Добрый день. Краткое расскажу что произошло.
С переходом всех сертификатов на ФНС на сервере перестали работать сертификаты. Они отображаются в сертификатах (cptools), но почему-то, судя по ошибкам, у сертификатов отсутствуют корневые сертификаты.
В итоге:
1. Есть флешка-носитель со всеми сертификатами.
2. В "контейнерах" (cptools) они отображаются (считыватель Aktiv Rutoken Lite)
некоторые данные тестирование контейнера
сертификат в контейнере
соответствует закрытому ключу да
цепочка сертификата проверена
сертификат в хранилище my
3. Есть установленный сертификат из контейнера и он ссылается на контейнер из флешки-носителя.
Некоторые логи сертификата
Встроенная лицензия : КриптоПро CSP
Ссылка на ключ : Есть
Контейнер : SCARD\rutoken_lt_######
Цепочка сертификатов: Успешно проверена.
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. ФНС и Мин.цифр сертификаты установлены.