2015-06-30 1 views
1

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

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

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

Я видел this answer, подразумевающее, что он должен был сделать с подписями GPG, но это Безразлично Не складывайся.

СБТ-нативной упаковщик RPM плагин не делает подписания в соответствии с его разработчиками, как можно быть засвидетельствовано командой 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 

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

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

Редактировать по запросу, вот выход из SBT (я считаю, что «ошибка» линия просто причуда реализации, а не фактические ошибки):

[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 
+0

У этого rpm на самом деле нет ничего подписанного в заголовке. Эти строки являются и не подписанными данными. Линия подписи будет выглядеть так: подпись V4 RSA/SHA1: XXX, идентификатор ключа xxxxxxx или подпись V3 DSA: NOKEY, идентификатор ключа xxxxx' или аналогичный. Поэтому я немного озадачен тем, что на самом деле делается там. Можете ли вы получить полный выход из процесса сборки и как он обрабатывает rpm после его создания? Что-нибудь еще касается rpm между сборкой и где вы смотрите на нее? –

+0

@EtanReisner Я могу показать вам только журнал sbt (который содержит всю информацию об отладке и который я добавил к моему вопросу.) Есть ли что-то, в частности, вы ищете? Я могу попытаться найти что-то в источнике об этом. К сожалению, я знаю больше об архитектуре этого плагина, чем о rpms;) – 2rs2ts

+0

Я понятия не имею, что это нам скажет, но вы можете запустить [этот скрипт python] (https://gist.github.com/deryni/78ee6f01f69a32f3746e) над рассматриваемым rpm и либо вставлять вывод в комментарий о gist или pastebin в другом месте? (Я бы сказал, поставил вопрос, но я не знаю, что в конечном итоге это будет в конечном итоге материально.) –

ответ

1

я догадка: вопрос RSA разбивается несколькими способами в RHEL5 об/мин. Самое простое исправить - попробовать подписаться с DSA, а не с RSA.

Действует ли DSA на MAC и RHEL5?

+0

Я использую подписи RSA на CentOS 5 на работе, и они, похоже, работают очень хорошо (если вы избегаете под-клавиш и т. Д.). Есть ли другие проблемы? Как вы знаете, как OP может иметь rpm с сигнатурой заголовка, но без сигнатуры полезной нагрузки/данных (если я правильно интерпретировал этот вывод)? –

+0

Я слышал, что проблема связана с 2048-битными ключами, но я не разбираюсь в этом вопросе, это то, что я видел, когда другие вопросы говорили о плохих заголовках, о которых говорилось ... но это было тогда, когда RPM были явно подписан. – 2rs2ts

+0

@ 2rs2ts Я провел кучу тестирования с помощью различных ключей и т. Д. на нескольких разных операционных системах в какой-то момент для работы (потому что коллега сделал заявку о том, что CentOS 5 не поддерживает более крупные ключи RSA), и если мое тестирование не было сильно нарушено, я получил CentOS 5 об/мин, чтобы проверить rpm, подписанный с 4096-битным RSA-ключом , –