Я не подписываю свои RPM, но у них все равно есть подписи. Заголовок V4 Подпись RSA / SHA1: ПЛОХО

Я создаю RPM с помощью sbt-native-packager на моем Mac который не может быть установлен на машинах RHEL 5, потому что он имеет подпись V4. Результат rpm -v --checksig на моем Mac:

Header V4 RSA/SHA1 signature: OK, key ID f769fd38
Header SHA1 digest: OK (2ee9b411052b2aeadcb0efa5401f246af8ca6e68)
MD5 digest: OK (b78e1256caba2959428b1e5544d562a6)

И результат rpm -v --checksig на машине RHEL 5:

Header V4 RSA/SHA1 signature: BAD, key ID f769fd38
Header SHA1 digest: OK (2ee9b411052b2aeadcb0efa5401f246af8ca6e68)
MD5 digest: OK (b78e1256caba2959428b1e5544d562a6)

Я видел этот ответ, который подразумевал, что он имел отношение к подписям GPG, но это не складывается.

Плагин RPM sbt-native-packager не подписывает, как утверждают его разработчики, о чем свидетельствует команда rpmbuild, которую он испускает:

rpmbuild -bb --target noarch-PayPal-Linux --buildroot /Users/2rs2ts/src/my-app/my-app/target/rpm/buildroot --define _topdir /Users/2rs2ts/src/my-app/my-app/target/rpm --define _tmppath /var/folders/gp/l9gt6r791p1bdcgtf2b2dppw392tbp/T/sbt_8f0f0597 myapp.spec

Кроме того, на моем Mac не установлено gpg, поэтому исправление в связанном ответе, похоже, не применимо ко мне. Я понимаю, что rpm обычно поставляется с установкой gpg, поэтому, возможно, он использует это для создания подписей, но я понятия не имею, какой ключ он использует или как заставить его подписать V3 или полностью прекратить подписание. Я не уверен, было ли это последнее утверждение хоть сколько-нибудь разумным, поскольку у меня очень ограниченный опыт работы с rpm.

Тем не менее я попытался хотя бы изменить ~/.rpmmacros, как предлагалось в этом руководстве, но безуспешно. У меня нет зацепок. Почему у моих пакетов RPM есть подписи, если я их не подписывал, и как я могу сделать так, чтобы эти подписи не были V4?

Edit для каждого запроса, вот результат sbt (я считаю, что строки «error» - это просто причуда реализации, а не фактические ошибки):

[debug] Executing rpmbuild with: rpmbuild -bb --target noarch-PayPal-Linux --buildroot /Users/2rs2ts/src/my-app/my-app/target/rpm/buildroot --define _topdir /Users/2rs2ts/src/my-app/my-app/target/rpm --define _tmppath /var/folders/gp/l9gt6r791p1bdcgtf2b2dppw392tbp/T/sbt_8f0f0597 myapp.spec
[info] Building target platforms: noarch-PayPal-Linux
[info] Executing(%install): /bin/sh -e /var/folders/gp/l9gt6r791p1bdcgtf2b2dppw392tbp/T/sbt_8f0f0597/rpm-tmp.67386
[error] + umask 022
[error] + cd /Users/2rs2ts/src/my-app/my-app/target/rpm/BUILD
[error] + /bin/rm -rf /Users/2rs2ts/src/my-app/my-app/target/rpm/buildroot
[error] + /bin/mkdir -p /Users/2rs2ts/src/my-app/my-app/target/rpm/buildroot
[error] + '[' -e /Users/2rs2ts/src/my-app/my-app/target/rpm/buildroot ']'
[error] + mv /Users/2rs2ts/src/my-app/my-app/target/rpm/tmp-buildroot/etc /Users/2rs2ts/src/my-app/my-app/target/rpm/tmp-buildroot/var /Users/2rs2ts/src/my-app/my-app/target/rpm/tmp-buildroot/x /Users/2rs2ts/src/my-app/my-app/target/rpm/buildroot
[error] + exit 0
[info] Processing files: myapp-VersionNotSet-ReleaseNotSet.noarch
[info] Provides: config(myapp) = 0:VersionNotSet-ReleaseNotSet
[info] Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh
[info] Requires(pre): /bin/sh
[info] Requires(post): /bin/sh
[info] Requires(preun): /bin/sh
[info] Requires(postun): /bin/sh
[info] Checking for unpackaged file(s): /usr/local/Cellar/rpm/5.4.15/lib/rpm/check-files /Users/2rs2ts/src/my-app/my-app/target/rpm/buildroot
[info] Wrote: /Users/2rs2ts/src/my-app/my-app/target/rpm/RPMS/noarch/myapp-VersionNotSet-ReleaseNotSet.noarch.rpm

person 2rs2ts    schedule 30.06.2015    source источник
comment
Этот rpm фактически ничего не подписано в заголовке. Эти строки являются данными без подписи. Строка подписи будет выглядеть как V4 RSA/SHA1 signature: XXX, key ID xxxxxxx, V3 DSA signature: NOKEY, key ID xxxxx или аналогично. Так что я немного озадачен тем, что на самом деле там делается. Можете ли вы получить полную информацию о процессе сборки и о том, как он обрабатывает обороты после сборки? Что-нибудь еще влияет на скорость вращения между сборкой и тем местом, где вы на нее смотрите?   -  person Etan Reisner    schedule 01.07.2015
comment
@EtanReisner Я могу показать вам только журнал sbt (в котором есть вся отладочная информация и который я добавил в свой вопрос). Есть ли что-то конкретное, что вы ищете? Я могу попытаться найти что-нибудь об этом в источнике. К сожалению, об архитектуре этого плагина я знаю больше, чем о rpms;)   -  person 2rs2ts    schedule 01.07.2015
comment
Понятия не имею, расскажет ли это нам что-нибудь, но можете ли вы запустить этот скрипт Python поверх рассматриваемый rpm и либо вставьте вывод в комментарий к сути, либо вставьте его в другое место? (Я бы сказал, задайте это вопросом, но я не знаю, будет ли это иметь какое-либо значение для проблемы в конечном итоге.)   -  person Etan Reisner    schedule 01.07.2015
comment
@EtanReisner Я бы хотел, но где мне взять модуль rpm? Не могу найти на PyPI.   -  person 2rs2ts    schedule 03.07.2015
comment
Он у вас уже есть. Он поставляется с CentOS и т. Д. Просто запустите скрипт, он должен работать.   -  person Etan Reisner    schedule 03.07.2015
comment
Думаю, я оговорился, когда сказал, что в этом выводе ничего не подписано. Я думаю, что на самом деле это может быть подписанный заголовок, но не подписанные полезные данные / данные, но я не уверен.   -  person Etan Reisner    schedule 03.07.2015
comment
@EtanReisner Я надеялся получить это на своем Mac :( но ладно, я сделаю это, когда вернусь в офис, и дам вам знать. Спасибо за помощь!   -  person 2rs2ts    schedule 05.07.2015
comment
Ах да, я не знаю, построено ли это где-нибудь еще. Я считаю, что это часть самого rpm.   -  person Etan Reisner    schedule 06.07.2015
comment
@EtanReisner Вот паста. Мне пришлось отредактировать некоторую частную информацию, чтобы RPM_BASENAMES не совпадал с RPMTAG_FILEINODES и другими подобными значениями, но я все равно не думаю, что это были критические фрагменты информации.   -  person 2rs2ts    schedule 07.07.2015
comment
Там определенно что-то ставит подпись. Также открытый ключ GPG. Вы узнаете этот ключ? Вы используете rpm5 на своем Mac?   -  person Etan Reisner    schedule 08.07.2015
comment
@EtanReisner Я использовал rpm, предоставленный homebrew (brew install rpm), который, похоже, имеет версию 5.4.15. Я не узнаю этот открытый ключ.   -  person 2rs2ts    schedule 08.07.2015
comment
Хочу добавить, что идентификатор ключа меняется каждый раз, когда я запускаю задачу rpm:package-bin. Интересно, является ли это одноразовым ключом, созданным rpmbuild.   -  person 2rs2ts    schedule 09.07.2015
comment
Я не знаю ничего о rpm5. Он на возраст новее, чем версии rpm, с которыми я имел дело в CentOS 5 и CentOS 6. Любое количество вещей могло измениться. Я бы посоветовал посмотреть, есть ли версия rpm 4, доступная через brew, и посмотреть, работает ли она больше, как ожидалось (если ничего другого, я полагаю, что результирующие rpm с большей вероятностью будут совместимы с намного более старыми rpm на RHEL 5 именно так).   -  person Etan Reisner    schedule 09.07.2015
comment
@EtanReisner, похоже, не существует формулы для числа оборотов в минуту. Я мог бы попытаться установить его, но я мог бы просто пойти по пути наименьшего сопротивления и использовать DSA, как предлагает Джефф.   -  person 2rs2ts    schedule 09.07.2015
comment
Если это сработает для вас, это, безусловно, разумная идея. Я думал, что проблема заключалась в том, чтобы вообще не подписывать (и не знать, откуда идет текущее подписание), но пожал плечами.   -  person Etan Reisner    schedule 09.07.2015
comment
@EtanReisner Это проблема, и пока она не будет решена, я не буду отмечать свой вопрос как решенный. Но, тем не менее, жизнь должна продолжаться ...   -  person 2rs2ts    schedule 10.07.2015


Ответы (1)


Рискну предположить: проблема в том, что RSA ломается несколькими способами на RHEL5 об / мин. Самое простое решение - попробовать подписать с помощью DSA, а не RSA.

DSA "работает" и на MAC, и на RHEL5?

person Jeff Johnson    schedule 01.07.2015
comment
Я использую подписи RSA на CentOS 5 на работе, и, похоже, они работают нормально (при условии, что вы избегаете подключей и т. Д.). Есть другие проблемы? Кстати, знаете ли вы, как OP может иметь rpm с подписью заголовка, но без подписи полезной нагрузки / данных (при условии, что я правильно интерпретировал этот вывод)? - person Etan Reisner; 03.07.2015
comment
Я слышал, что проблема связана с 2048-битными ключами, но я плохо разбираюсь в этом вопросе, это как раз то, о чем я видел другие вопросы, говорящие о плохих заголовках, о которых говорят ... но это было тогда, когда RPM явно указывались подписано. - person 2rs2ts; 05.07.2015
comment
@ 2rs2ts Я провел кучу тестов с разными ключами / etc. на кучу разных ОС в один момент для работы (потому что коллега сделал заявление о том, что CentOS 5 не поддерживает более крупные ключи RSA), и если мое тестирование не было сильно нарушено, я получил CentOS 5 об / мин, чтобы проверить об / мин, подписанный 4096-битным ключом RSA . - person Etan Reisner; 06.07.2015
comment
Да, некоторые ключи RSA работают, другие нет, в зависимости от параметров. Отпечатки пальцев V4 неверны. Я предлагаю DSA… ymmv. - person Jeff Johnson; 06.07.2015
comment
Параметры на самом ключе или подключах? (Без которого экспорт gpg становится чрезвычайно болезненным.) Не стесняйтесь сказать мне, что вы не помните / care / и т. Д. больше. Надеюсь, это скоро все равно станет древней историей. - person Etan Reisner; 08.07.2015
comment
Отпечаток V4 RSA - это хэш параметров pubkey, обороты даже близко не подходят для правильного определения (отпечаток V3 RSA отличается). Другая проблема - это количество бит и количество байтов: они идентичны для DSA, который всегда имеет установленный msbit, но не для RSA, который имеет шанс 1 из 256, что все 8 бит msbyte подписи равны нулю ( и rpm ошибается в длине). - person Jeff Johnson; 08.07.2015
comment
Это не имеет никакого отношения к подключам, которые полностью не поддерживаются в RPM. - person Jeff Johnson; 08.07.2015
comment
Это никогда не будет древней историей: даже после исправления вышеуказанных недостатков феноменологически появляются ошибки, которые даже абсолютно точное описание недостатка (ов) от человека, который выполнял и реализацию, и исправление, не может исправить. ymmv. - person Jeff Johnson; 08.07.2015
comment
Когда я устанавливаю _build_sign на DSA, он работает. Есть еще некоторое несоответствие. Mac: Header V4 DSA signature: OK, key ID 98d3b138 CentOS: Header V4 DSA signature: NOKEY, key ID 98d3b138. Я не уверен, как заставить его использовать подпись V3. У меня --force-v3-sigs в моем __gpg_sign_cmd. - person 2rs2ts; 08.07.2015
comment
Вы можете принудительно подписать V3 для RSA с помощью ~ / .gnupg / gpg.conf (и --force-v3-sigs, вероятно, эквивалентен). Между тем изменение формата подписи V3 - ›V4 происходило все это столетие. Исправить отпечаток RSA в RHEL5 rpm тоже не сложно: просто RHAT никогда не выпустит исправление. Так что использование DSA - наименее болезненное решение. - person Jeff Johnson; 09.07.2015
comment
конкретный ответ: NOKEY просто означает, что вы должны использовать rpm --import для импорта pubkey. Сделайте rpm -q gpg-pubkey | grep 98d3b138, чтобы убедиться, что pubkey импортирован. - person Jeff Johnson; 09.07.2015
comment
@JeffJohnson У меня не установлен gpg, rpm использует встроенный BeeCrypt (насколько я понимаю). Добавление --force-v3-sigs к моему %__gpg_sign_cmd, как было предложено в руководстве, которое я связал в своем OP, в любом случае ничего не изменило. Я, вероятно, просто буду использовать DSA. Это не отвечает на мой вопрос, но, по крайней мере, разблокирует меня. Спасибо всем за информацию! - person 2rs2ts; 10.07.2015