Я хочу создать собственный репозиторий для нашего приложения. Я создал главный ключ с подписанием подраздела с pgp прежде, и я подписываю deb пакет с:
dpkg-sig --sign builder sample.deb
Затем я создаю repo с reprepro:
reprepro --ask-passphrase -b base includedeb all sample.deb
Reprepro создает необходимые файлы со знаком:
./conf:
distributions options
./db:
checksums.db contents.cache.db packages.db references.db release.caches.db version
./dists:
all
./dists/all:
InRelease main Release Release.gpg
./dists/all/main:
binary-amd64 binary-i386
./dists/all/main/binary-amd64:
Packages Packages.gz Release
./dists/all/main/binary-i386:
Packages Packages.gz Release
./pool:
main
./pool/main:
s
./pool/main/s:
sample
./pool/main/s/sample:
sample_2.2.48.9015_all.deb
Я устанавливаю открытый ключ на клиентской машине, но после установки пакета я получаю это сообщение:
WARNING: The following packages cannot be authenticated!
sample
Install these packages without verification? [y/N]
Почему?
Подписание GPG является сложным. Для репозиториев APT существует два слоя подписей GPG:
dpkg-sig
или или debsign
. Вы видите, что сообщение, потому что APT не видит подписи на Ваших метаданных репозитория. Можно заставить это произойти путем добавления SignWith
к конфигурации reprepro. Можно читать больше во всестороннем сообщении в блоге, которое я записал, здесь .
можно проверить, что SignWith
работал путем поиска файла, названного Release.gpg
или InRelease
. Если Вы находите файл названным InRelease
, просматриваете содержание файла и удостоверяетесь, что подпись GPG найдена внизу. Если так, reprepro генерировал подпись правильно. Следует иметь в виду, что репозитории, которые являются подписанным GPG, все еще уязвимы для большого количества атак "человек посередине", если они не подаются по HTTPS.
я также рекомендовал бы проверить, что общедоступный ключ GPG был правильно импортирован в клиентской системе путем выполнения apt-key list
. Если Вы не видите ключ на списке, необходимо добавить его с apt-key add filename
.
важно отметить, что Ubuntu и Debian не проверяют подписи GPG пакетов - это отключено по умолчанию и ужасно, ужасно трудное получить работу. Я советовал бы избегать GPG подписание Ваших пакетов.
Также примечание, что необходимо распределить репозиторий по HTTPS, для предотвращения множества ошибок безопасности (даже с подписями GPG).