
Привет, Хабр! Сегодня хочу рассказать про боль, которая, думаю, знакома многим, кто хоть раз сталкивался с поддержкой устаревших 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