Библиотека сайта rus-linux.net
Технология подготовки релизов веб-браузера Firefox
Глава 2 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: Firefox Release Engineering
Авторы: Chris AtLee, Lukas Blakk, John O'Duinn, Armen Zambrano Gasparian
Перевод: А. Панин
2.5. Добавление цифровых подписей
Для того, чтобы наши пользователи могли быть уверены в том, что они на самом деле скачали не модифицированную сборку от организации Mozilla, мы добавляем к сборкам несколько различных типов цифровых подписей.
Первый тип подписи используется для наших сборок, предназначенных для работы под управлением Windows. Мы используем ключ Microsoft Authenticode (технологии создания цифровой подписи на основе кода подписи) для добавления электронных подписей всем файлам с расширениями .exe
и .dll
. Windows может использовать эти подписи для проверки факта получения приложения из доверенного источника. Мы также подписываем исполняемый файл установщика Firefox с помощью ключа технологии Authenticode.
После этого мы используем GPG для генерации наборов контрольных сумм MD5 и SHA1 для всех сборок на всех платформах и генерируем отдельные подписи GPG для файлов контрольных сумм, а также для всех сборок и установщиков. Эти подписи используются зеркалами и участниками сообщества для проверки скачанных файлов.
В целях безопасности мы подписываем файлы на удаленной машине для генерации цифровых подписей, которая защищена от сторонних соединений с помощью межсетевого экрана и VPN. Наши электронные ключи, пароли и связки электронных ключей передаются между участвующими в подготовке релиза лицами исключительно посредством защищенных каналов, обычно персонально для возможной минимизации риска их раскрытия.
Рисунок 2.5: Добавление электронной подписи для установщиков Firefox
До недавнего времени процесс добавления электронных подписей требовал работы ответственного за выпуск релиза лица на удаленном сервере ("мастер-сервере электронных подписей"), которая занимала практически час и заключалась в ручной загрузке сборок, подписывании их и загрузке обратно на сервер ftp.mozilla.org
перед тем, как автоматизированная система подготовки релиза сможет продолжить работу. После окончания процесса добавления электронных подписей на мастер-сервере и загрузки всех файлов, файл журнала осуществленных в ходе добавления подписей операций загружается в директорию для хранения релиз-кандидатов на сервере ftp.mozilla.org
. Наличие этого файла журнала на сервере ftp.mozilla.org
указывает на окончание ручной работы по добавлению подписей и с этого момента зависимые системы для сборки, которые следят за этим файлом, могут продолжить работу в автоматическом режиме. Не так давно мы добавили дополнительный уровень автоматизации для выполнения этапов добавления цифровых подписей. Теперь ответственное за выпуск релиза лицо может открыть командную оболочку Cygwin на мастер-сервере электронных подписей и установить несколько переменных окружения, имеющих отношение к релизу, таких, как VERSION
, BUILD
, TAG
и RELEASE_CONFIG
, которые позволят сценарию найти соответствующие директории на сервере ftp.mozilla.org
и получить информацию о том, когда все сборки релиза будут загружены, после чего процесс добавления электронных подписей может начаться. После получения новейшей пригодной для эксплуатации версии наших инструментов для добавления электронных подписей подписывающий сборки человек может просто выполняет команду make autosign
. После этого он вводит две ключевые фразы, одна из которых предназначается для gpg, а вторая - для кода подписи. Сразу после завершения автоматической проверки этих ключевых фраз средствами сценариев начинает выполняться автоматизированный цикл загрузки, в рамках которого производится наблюдение за загружаемыми сборками и повторно упакованными сборками, которые автоматически загружаются непосредственно после того, как становятся доступны. Сразу же после загрузки автоматизированная система начинает добавление цифровых подписей без необходимости человеческого вмешательства в процесс.
Отсутствие необходимости в человеческом вмешательстве при добавлении электронных подписей к сборкам важно по двум причинам. Во-первых, это обстоятельство позволяет сократить риск возникновения ошибки по вине человека. Во-вторых, это обстоятельство позволяет добавлять электронные подписи в нерабочее время, поэтому ответственному за выпуск релиза лицу не придется находиться за компьютером в неудобное для работы время.
Все сборки имеют соответствующие им файлы контрольных сумм MD5SUM и SHA1SUM, сгенерированные для них, причем значения контрольных сумм записываются в файлы с теми же именами, что и сборки. Эти файлы будут загружены назад в директорию для хранения релиз-кандидатов, а также будут скопированы в конечную директорию для хранения релизов на сервере ftp.mozilla.org
, когда она будет создана, поэтому любой скачавший установщик Firefox с одного из наших зеркал человек может удостовериться в том, что он получил не модифицированный программный продукт. Когда все подписанные данные становятся доступны и проверяются, они загружаются назад на сервер ftp.mozilla.org
вместе с файлом журнала операций добавления подписей, который ожидает система автоматизированной подготовки релиза.
Наш следующий запланированный этап усовершенствования процесса добавления электронных подписей заключается в создании инструмента, который позволит нам подписывать файлы одновременно с подготовкой сборки или повторной упаковкой сборки. Эта работа требует создания приложения для сервера электронных подписей, которое сможет принимать запросы на добавление подписей для файлов на машинах, осуществляющих сборку для выпуска релиза. Она также требует создания клиентского инструмента для работы с электронными подписями, который сможет соединяться с сервером электронных подписей, проходить аутентификацию, представляясь клиентом доверенной машины, которая в свою очередь может осуществлять запросы на добавление электронных подписей, ожидать добавления подписи, загружать подписанные данные и после этого включать их в состав сборки путем упаковки. Как только эти усовершенствования будут доступны для использования, мы сможем уйти от нашего последовательного процесса добавления всех электронных подписей, а также от нашего последовательного процесса генерации обновлений (о котором будет написано ниже). Мы ожидаем, что после выполнения этой работы общее время, затрачиваемое на подготовку релиза, сократится на несколько часов.
Продолжение статьи: Обновления