Политика в Fedora по отношению к корневым SSL-сертификатам со слабыми ключами

Ситуация с корневыми сертификатами для HTTPS настолько плоха, что даже непонятно, с чего начинать. Ну, например, посмотрите этот кусок из выступления Poul-Henning Kamp на FOSDEM 2014:



Наши коллеги присутствовали на этом выступлении, и мы хорошо помним, как зал умолк, когда народ понял главный посыл этого фрагмента выступления phk.

В каждой системе, в каждом браузере по умолчанию присутствует список сертификатов, которыми подписываются другие сертификаты. Кем и когда создавался этот список неизвестно, и это не шутка! Среди корневых удостоверяющих сертификатов действительно есть выпущенные неизвестно кем, и добавленные неизвестно как (привет тем проектам, что не перешли на Git). Еще там есть сертификаты, выпущенные государственными организациями стран, известных гонениями на инакомыслящих (мы не имеем в виду США - после Сноудэна с ними все и так понятно). Можете посмотреть сами - наберите в адресной строке браузера about:preferences#advanced, и там выберите вкладку Certificates -> View Certificates -> Authorities и поизучайте содержимое. Что это за сертификаты, почему они тут, зачем нам им доверять - никто не скажет. Однако ими подписываются сертификаты популярных веб-сервисов, и это, типа, очень безопасно, а вот самоподписанные сертификаты, это, мол, наоборот страшная угроза безопасности.

Это политические проблемы, а есть еще и технические. Удобного инструментария, который бы позволил пользователям включать или отключать сертификационные центры - нет. Интеграции с другими утилитами - нет. Нет и удобных и надежных криптоподсистем, а есть лишь несколько разной степени качественности библиотек, разрабатываемых авторами разной степени вменяемости. И увы, эти библиотеки порой несовместимы друг с другом, что наши коллеги недавно заметили.

Недавно Mozilla начала удаление из своего набора корневых сертификатов, содержащих слабые ключи. Шаг очень правильный, тут никто не спорит. Но наши коллеги из Red Hat немного потестировали, и выяснили, что несмотря на совместимость с NSS, новый набор сертификатов вызывает проблемы у OpenSSL и некоторых версий GnuTLS. Сказалась изоляция разработчиков разных криптобиблиотек друг от друга. Поэтому мэйнтейнеру пакета ca-certificates пришлось пойти на неоднозначное решение - откатить изменения Mozilla, чтобы работали OpenSSL и GnuTLS, и добавить в пакет специальную утилиту для включения/отключения сертификатов со слабыми ключами. Понятно, что это серьезно влияет на безопасность соединений, но иначе OpenSSL вообще не будет работать со цепочками сертификатов, затронутых удалением. Он завел специальную страницу в Wiki, где будут описаны тонкости пакета с сертификатами - посматривайте туда.

Но есть и хорошие новости - в условиях совершенного бардака с криптобиблиотеками, всегда есть возможность разработчику проявить себя, в т.ч. и с пользой для бюджета. Мы поздавляем Paul Bakker с покупкой ARM Ltd. его проекта, PolarSSL!