23.06.2025

Устаревание apt-key и add-apt-repository, что делать?

Почему apt-key устаревает?

Процесс безопасной установки содержит в себе много подводных камней, одним из которых является скачивание файлов и ресурсов с сохранением конфиденциальности и проверки подлинности. В Linux дистрибутивах были реализованы утилиты apt-key и add-apt-repository, которые автоматизировали процесс проверки пакетов репозиториев по добавленным ключам. Однако появилась значимая проблема безопасности: отсутствие механизма закрепления конкретного ключа за репозиторием. Это значит, что в случае компрометации ключа компании или злоупотребления сотрудников своими полномочиями может быть подписан вредоносный файл. В новых версиях дистрибутивов уже интегрировали более безопасное решение с использованием GPG напрямую, которое рассмотрим ниже.

Какая утилита заменит apt-key?

Вместо устаревающих apt-key и apt-add-repository, которые были посредником в работе механизма проверки, будет действовать только утилита GPG. Она и до этого присутствовала в механизме идентификации и проверки целостности, подлинности. Однако обновление позволит избавиться от утилит посредников, которые представляли ряд угроз.

Скриншот №1 — GPG

GPG или GNU Privacy Guard представляет собой крипто-пакет, позволяющий производить шифрование, расшифровку, подписывать документы и сообщения с помощью ЭЦП, хранить ключи с идентификаторами в базе и выполнять многие функции криптосистемы. Как раз одной из таких является проверка подписи на пакетах apt. Для наглядности будем выполнять все действия на примере облачного сервера от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.

Скриншот №2 — Создание сервера

Потребуется некоторое время для развертывания серверных мощностей. После чего вы можете подключиться любым из удобных способов. И перейдем к терминалу с нашей ОС!

Как добавить ключи и репозиторий в терминале?

Для начала необходимо получить публичные ключи и ссылку на репозиторий откуда буду скачиваться пакеты. Для примера, рассмотрим базу данных MongoDB. Перейдя, на официальный сайт найдем для дистрибутива Debian репозиторий и зафиксируем основные компоненты:

Для работы с компонентами необходимы утилиты curl и gpg, при их отсутствии установите через команду ниже:

apt install curl gnupg -y

При скачивании данных из репозитория перед установкой Linux обращается к списку доверенных ключей и проверяет подписи, если совпадают, то переходим к процессу установки. Иначе утилита отображает не соответствие подписей и пакет считается потенциально недостоверным. Для того, чтобы файлы проходили проверку необходимо скачать публичный ключ и добавить в список доверенных.

Ключи могут быть в формате pgp или asc, поэтому полученные файлы, для корректной работы необходимо конвертировать в gpg!
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo\
gpg --dearmor -o /usr/share/keyrings/mongokey.gpg

Скриншот №3 — Скачивание публичного ключа с сайта

Проверив, что файл действительно представляет собой публичную подпись, теперь необходимо добавить репозиторий и связать его с ключом. Для этого пропишем команду, которая позволит внести изменения в файл с репозиториями:

echo "deb [ signed-by=/usr/share/keyrings/mongokey.gpg ]\
http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main"\
>> /etc/apt/sources.list.d/mongodb-org-7.0.list

Рассмотрим подробнее каждый элемент команды:

Скриншот №4 — Запись в репозиторий

Данный дистрибутив предназначен для Debian 12, если вам необходим другой, то перейдите на официальный сайт и выберете подходящий!

После того, как мы проверили с помощью утилиты cat наличие записи, можем обновить дистрибутив и попробовать скачать ПО:

apt update && apt upgrade && apt install\
mongodb-org -y

Скриншот №5 — Скачивание из репозитория

Пакеты были успешно загружены и установлены в системе! В данном случае мы безопасно установили ключи, так как предварительно соединились по HTTPS с сайтом, у которого был достоверный сертификат. Это говорит о подлинности хранимых данных и так же хеш-сумма, которая приложена к ключу удостоверяет в его целостности. А соответственно переданные пакеты подлинны и не изменены!