← ALB News · curated headline

Лечим ошибки SSL на старых Windows: пишем утилиту обновления корневых сертификатов на C#

Habr · RU · Programming · 11/3/2026, 8:28:48 AM

Привет, Хабр! Сегодня хочу рассказать про боль, которая, думаю, знакома многим, кто хоть раз сталкивался с поддержкой устаревших Windows-систем. А также про то, как небольшая консольная утилита на C# решила проблему, которая годами заставляла меня и моих пользователей хвататься за голову. С чего всё началось Всё началось с проекта BELPORTAL — набора решений для работы с государственными порталами Беларуси. Среди прочего там есть клиент для доступа к порталам, и вот с ним-то и возникла проблема. Пользователи ставили BELPORTAL на Windows 7, Windows XP, на терминальные серверы — словом, туда, где всё ещё жил старый добрый софт. И примерно через одного получали вот такую картину: Не удается установить защищенное соединение с сервером или на более свежих системах: Ошибка 0x800B0101 или классическое: Сертификат сервера не является доверенным При этом HTTP-сайты открывались, интернет работал, антивирус молчал. Но HTTPS — ни в какую. Диагностика: в чём оказалась проблема Копнув глубже, я выяснил банальную вещь: устаревшее хранилище корневых сертификатов. Windows хранит список доверенных корневых сертификатов в реестре по пути: HKLM\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates Microsoft регулярно обновляет этот список через Windows Update. Проблема в том, что: На Windows XP Windows Update для сертификатов уже давно не работает. На Windows 7 обновления сертификатов прекратились с окончанием поддержки. На корпоративных машинах политиками часто отключён Windows Update целиком. На терминальных серверах обновление сертификатов — это отдельный квест. На изолированных системах (POS-терминалы, банкоматы, медицинское оборудование) интернета нет вообще. Читать далее

Continue to Habr →

You are being forwarded in 6s — stay on this page