В Windows, согласно https://technet.microsoft.com/en-us/library/dn265983(v=ws.11).aspx обновление корневых сертификатов производится с помощью Certificate Trust List — CTL. Хотя из статьи следует, что это какая то примочка для кеширования списка сертификатов на локальном сервере, поиск услужливо подсказывает, что существует http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab, подписанный Microsoft, которому Windows, начиная с 7, доверяет безоговорочно, и обновляет его каждые 2 недели, а в случае установки особого обновления — каждый день.
В консоли (MMC) можно добавить сертификаты, к которым нет доверия, но вот удалить корневой сертификат не так то просто.
Вдохновившись недавним скандалом с объединением WoSign и StartCom, решил удалить какой-нибудь стремный сертификат из Windows 7. Выбор пал на IZENPE S.A. (ea 56 4f ec 3c 83 a1 14 88 78 81 b2 2b 05 22 c0 07 41 5b 42), ибо баски и SHA-1. Но не тут-то было. После удаления корневого сертификата и захода на https://www.izenpe.com из Chrome 55.0.2883.87 m сертификат появился в списке сторонних корневых центров сертификации, и, соответственно, в списке доверенных корневых центров сертификации. Что, в принципе, ожидаемо.
Google Chrome attempts to use the root certificate store of the underlying operating system to determine whether an SSL certificate presented by a site is indeed trustworthy, with a few exceptions.
https://www.chromium.org/Home/chromium-security/root-ca-policy
Повторить трюк с Firefox 50.1.0 не вышло, те используют внутри браузера свое хранилище сертификатов. С Internet Explorer 11.0.9600.18163 трюк повторяется.
Казалось бы, виновники найдены. Но нет, берем https://opensource.apple.com/source/security_certificates/security_certificates-55036/roots/Izenpe-RAIZ2007.crt и открываем через Расширения оболочки шифрования, то бишь двойным щелчком.
И видим, что сертификат доверенный.
Это как вообще? Заходим в консоль и видим, что злосчастный сертификат есть в списке доверенных корневых центров сертификации.
А может Windows все неизвестные корневые сертификаты подтягивает в доверенное хранилище? Берем OpenSSL, генерируем корневой сертификат, открываем. Недоверенный.
А я уже раскатал губу, что удастся подписывать своим CA сертификаты для гитхаба. Хотя ни одна из записей реестра, описанная в статье на technet не существует по умолчанию ни в Windows 7, ни в Windows Server 2012, по всему видно, что имеется захардкоженный список доверенных сертификатов, не видимый ни в реестре, ни в групповых политиках, ни в консоли управления.
Автор: galeksandrp