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

Уведомление

Icon
Error

7 Страницы<1234>»
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей *  
#11 Оставлено : 4 июля 2024 г. 12:11:24(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
В сертификате и json еще есть город, но скорее всего будут расхождения в тексте,
+ можно скачать к себе через текущий web-api и потом периодически обновлять.

Самый простой вариант пока проверять так:
1. Сертификат выдан АУЦ (по цепочке или по AKI)
2. В должности есть слово нотариус

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
GTAlex оставлено 04.07.2024(UTC)
Offline GTAlex  
#12 Оставлено : 4 июля 2024 г. 12:53:29(UTC)
GTAlex

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2021(UTC)
Сообщений: 171
Российская Федерация
Откуда: Нск

Сказал(а) «Спасибо»: 66 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
В сертификате и json еще есть город, но скорее всего будут расхождения в тексте,
+ можно скачать к себе через текущий web-api и потом периодически обновлять.

Самый простой вариант пока проверять так:
1. Сертификат выдан АУЦ (по цепочке или по AKI)
2. В должности есть слово нотариус



Да, я на этом варианте и остановлюсь!

Андрей, спасибо большое.

P.S.
в плане автоматизации вопрос, этот файл trustca.txt где то в официально доступном месте? (его же надо в актуальном состоянии держать)
и ещё - разве метод VerifyCades() не проверяет сертификат на АУЦ?

Отредактировано пользователем 4 июля 2024 г. 12:54:10(UTC)  | Причина: Не указана

Offline Андрей *  
#13 Оставлено : 4 июля 2024 г. 13:02:04(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
VerifyCades ничего не знает про АУЦ.
Цепочка строится до корневого, если в mRoot будет сертификат Минцифры - успешно.
В промежуточных (mCA) сертификаты АУЦ.
Аналогично, если поместить тестовый корневой сертификат и попытаться проверить статус - тоже будет успешно.

trustca.txt = можно ограничить конкретным перечнем АУЦ.
Например, по УЦ ФНС:
с 15.11.2022:
E91F07442C45B2CF599EE949E5D83E8382B94A50
с 21.07.2023:
D156FB382C4C55AD7EB3AE0AC66749577F87E116


Сам реестр сертификатов АУЦ есть в xml,
а также можно через web-api портала проверять (по серийному номеру), но это зависимость от внешней ИС.

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#14 Оставлено : 4 июля 2024 г. 13:09:13(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
вот выборка (поле ID) выданные с 2023 по сегодня:
trustca.txt (3kb) загружен 1 раз(а). trustca 2023-20240701.xlsx (21kb) загружен 0 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline GTAlex  
#15 Оставлено : 4 июля 2024 г. 13:10:40(UTC)
GTAlex

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2021(UTC)
Сообщений: 171
Российская Федерация
Откуда: Нск

Сказал(а) «Спасибо»: 66 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
VerifyCades ничего не знает про АУЦ.
Цепочка строится до корневого, если в mRoot будет сертификат Минцифры - успешно.
В промежуточных (mCA) сертификаты АУЦ.
Аналогично, если поместить тестовый корневой сертификат и попытаться проверить статус - тоже будет успешно.

trustca.txt = можно ограничить конкретным перечнем АУЦ.
Например, по УЦ ФНС:
с 15.11.2022:
E91F07442C45B2CF599EE949E5D83E8382B94A50
с 21.07.2023:
D156FB382C4C55AD7EB3AE0AC66749577F87E116


Сам реестр сертификатов АУЦ есть в xml,
а также можно через web-api портала проверять (по серийному номеру), но это зависимость от внешней ИС.



1. про VerifyCades спасибо, значит нужно везде проверку на АУЦ добавить (про пример с тестовым корневым особенно, а то я проверил самоподписанным, VerifyCades ошибку выдало и я успокоился - а про корневой тестовый я и не подумал)

2. я так понимаю сейчас во всех сертификатах выданных в РФ mRoot будет Минцифры? (по сути достаточно это и проверить? или я не прав?)

3. вот я и хочу trustca.txt чтобы был всегда актуален - нужно его автоматически обновлять, а то будет какая то с ДД.ММ.20ГГ где ID изменится и "привет" ...

4. про web-api портала где можно подробней узнать? юзать API вообще супер - всегда актуальная информация в онлайн режиме

Отредактировано пользователем 4 июля 2024 г. 13:13:11(UTC)  | Причина: Не указана

Offline GTAlex  
#16 Оставлено : 4 июля 2024 г. 13:17:56(UTC)
GTAlex

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2021(UTC)
Сообщений: 171
Российская Федерация
Откуда: Нск

Сказал(а) «Спасибо»: 66 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Как пример-черновик:

Код:
$certBase64 = $cert->Export(0);
                    echo ', "Certificate": '. json_encode($certBase64);
                    $certPEM = "-----BEGIN CERTIFICATE-----\n" . $certBase64 . "\n" . "-----END CERTIFICATE-----\n";
                    $res = openssl_x509_read($certPEM);
                    if ($res)
                    {
                        $CertData = openssl_x509_parse($res); 

$AKI= substr(str_replace(":", "", str_replace("keyid:", "", $CertData['extensions']['authorityKeyIdentifier'])) , 0, 40) ;

например - простой текстовый справочник (кому будем доверять или таблица + поле, что этот УЦ для нотариусов или свой вариант... )

function isQualifiedCA($AKI) -- по ИдКлюча УЦ из сертификата подписанта - проверяем, а АУЦ ли это? Либо до корневого - если строится цепочка(не забыть проверять, что в root хранилище пишут...    )
{
try
 {	   
  $file_content = file_get_contents('/var/www/html/trustca.txt');
  $content_before_string = strstr($file_content, $AKI, true);
  if (false !== $content_before_string) {
    $line = count(explode(PHP_EOL, $content_before_string));
    if ($line>0) return true;
   } 
 }  
 catch(Exception $e) { 
 }
 
 return false;
}


хм ... какой то сложный способ получения корневого АУЦ
я думал можно как то попроще
Offline Андрей *  
#17 Оставлено : 4 июля 2024 г. 13:18:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
про портал - https://e-trust.gosuslug...try/ufo-certificate-list
там есть post\json по серийному номеру УЦ (тут вопрос - еще его получить.. как) - не вариант,
мы же поставим в mRoot корневой и будем получать цепочку...

а если нет - то перехватить в catch по тексту с кодом ошибки

Код:
catch(Exception $e) { 
        $ExceptionStr = $e->getMessage(); 
			
        if (strpos($ExceptionStr, "0x800B010A")) { /*0x800B010A: Не удается построить цепочку сертификатов для доверенного корневого центра => установить через certmgr сертификат УЦ  */
			  


и вот тут (без доверия к корню) - либо web, либо локальный trustca - по ид ключа УЦ искать.


Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
GTAlex оставлено 04.07.2024(UTC)
Offline Андрей *  
#18 Оставлено : 4 июля 2024 г. 13:22:01(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
Автор: GTAlex Перейти к цитате
Автор: Андрей * Перейти к цитате
Как пример-черновик:

Код:
$certBase64 = $cert->Export(0);
                    echo ', "Certificate": '. json_encode($certBase64);
                    $certPEM = "-----BEGIN CERTIFICATE-----\n" . $certBase64 . "\n" . "-----END CERTIFICATE-----\n";
                    $res = openssl_x509_read($certPEM);
                    if ($res)
                    {
                        $CertData = openssl_x509_parse($res); 

$AKI= substr(str_replace(":", "", str_replace("keyid:", "", $CertData['extensions']['authorityKeyIdentifier'])) , 0, 40) ;

например - простой текстовый справочник (кому будем доверять или таблица + поле, что этот УЦ для нотариусов или свой вариант... )

function isQualifiedCA($AKI) -- по ИдКлюча УЦ из сертификата подписанта - проверяем, а АУЦ ли это? Либо до корневого - если строится цепочка(не забыть проверять, что в root хранилище пишут...    )
{
try
 {	   
  $file_content = file_get_contents('/var/www/html/trustca.txt');
  $content_before_string = strstr($file_content, $AKI, true);
  if (false !== $content_before_string) {
    $line = count(explode(PHP_EOL, $content_before_string));
    if ($line>0) return true;
   } 
 }  
 catch(Exception $e) { 
 }
 
 return false;
}


хм ... какой то сложный способ получения корневого АУЦ
я думал можно как то попроще

это не получение корневого АУЦ. Корневого АУЦ вообще не существует)
Корневой сертификат ГУЦ, МКС, а теперь МЦ - не аккредитуются же, они самоподписанные ...

Это пример как распарсить сертификат подписанта и вытащить из него AKI - идентификатор ключа УЦ (далее мы по списку проверяем - а АУЦ ли он?)


Кто напишет более понятно\проще на php - флаг в руки, а опубликует здесь - получить лайки, но это не точно.



Техническую поддержку оказываем тут
Наша база знаний
Offline GTAlex  
#19 Оставлено : 4 июля 2024 г. 13:23:42(UTC)
GTAlex

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2021(UTC)
Сообщений: 171
Российская Федерация
Откуда: Нск

Сказал(а) «Спасибо»: 66 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
про портал - https://e-trust.gosuslug...try/ufo-certificate-list
там есть post\json по серийному номеру УЦ (тут вопрос - еще его получить.. как) - не вариант,
мы же поставим в mRoot корневой и будем получать цепочку...

а если нет - то перехватить в catch по тексту с кодом ошибки

Код:
catch(Exception $e) { 
        $ExceptionStr = $e->getMessage(); 
			
        if (strpos($ExceptionStr, "0x800B010A")) { /*0x800B010A: Не удается построить цепочку сертификатов для доверенного корневого центра => установить через certmgr сертификат УЦ  */
			  


и вот тут (без доверия к корню) - либо web, либо локальный trustca - по ид ключа УЦ искать.




да я как раз 0x800B010A и обрабатываю в исключении, поэтому и думал что всё норм, но момент с корневым тестовым УЦ я не учел ...
надо получать корневой и сверять его с реестром (файлом) АУЦ
Offline Андрей *  
#20 Оставлено : 4 июля 2024 г. 13:27:37(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
Автор: GTAlex Перейти к цитате


да я как раз 0x800B010A и обрабатываю в исключении, поэтому и думал что всё норм, но момент с корневым тестовым УЦ я не учел ...
надо получать корневой и сверять его с реестром (файлом) АУЦ


и опять неправильно.

АУЦ у нас, это, к примеру, УЦ ФНС, этот УЦ выдал сертификат нотариусу.
В сертификате нотариуса есть Ид ключа УЦ ФНС и именно по этой строке проверяем в trustca.txt !

Причем тут получить корневой и сверять его с реестром? Ничего не нужно проверять.
Информация об УЦ есть в сертификате подписанта!



Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
GTAlex оставлено 04.07.2024(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
7 Страницы<1234>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.