Maven проверяет подписи загруженных файлов pom / jar

Я пытался найти, есть ли центральный репозиторий с поддержкой SSL, но, вероятно, его нет. Я заметил, что есть подписи для каждого файла jar и pom в центральном репозитории maven. По крайней мере, я хотел бы проверить подписи всех загруженных файлов maven (pom / jar).

Пример из http://repo1.maven.org/maven2/org/apache/ant/ant/1.8.2/:

ant-1.8.2.jar
ant-1.8.2.jar.asc
ant-1.8.2.jar.asc.md5
ant-1.8.2.jar.asc.sha1
ant-1.8.2.jar.md5
ant-1.8.2.jar.sha1
ant-1.8.2.pom
ant-1.8.2.pom.asc
ant-1.8.2.pom.asc.md5
ant-1.8.2.pom.asc.sha1
ant-1.8.2.pom.md5
ant-1.8.2.pom.sha1

Я понимаю, что мне придется импортировать открытые ключи для каждого репозитория, и меня это устраивает. Я предполагаю, что открытые ключи для maven central находятся здесь https://svn.apache.org/repos/asf/maven/project/KEYS.

В сети есть МНОЖЕСТВО руководств о том, как подписаться с помощью maven. Однако я не нашел никакой информации о том, как заставить maven (2 или 3) проверять подписи загруженных файлов jar / pom. Является ли это возможным?

(Nexus Professional не является вариантом)

Спасибо за помощь.


person IgorY    schedule 03.07.2011    source источник
comment
Каждый артефакт подписан отдельным ключом загрузчика, поэтому я не знаю, будут ли они в KEYS содержаться. И при регистрации, например, с сервером Sonatype OSS нет никакой фазы, на которой ключ PGP загрузчика помещается в файл. Тем не менее, я тоже хочу получить ответ по этому поводу.   -  person Michael Ekstrand    schedule 12.05.2013
comment
MNG-2477 - это (в настоящее время открытая) проблема для добавления этой функции в Maven.   -  person Joe    schedule 08.10.2013
comment
Вы используете Artifactory или что-то подобное? Это вариант? Взгляните на плагины: jfrog.com/home/v_artifactorypro_features#addon-webstart   -  person Pmt    schedule 28.10.2013


Ответы (4)


Теперь, когда люди, кажется, понимают, что это реальная проблема безопасности (как описано в это сообщение в блоге (блог не работает, вот заархивированная версия блога)), существует плагин для проверки подписей PGP. Вы можете проверить подписи для всех зависимостей вашего проекта с помощью следующей команды:

mvn org.simplify4u.plugins:pgpverify-maven-plugin:check

Конечно, чтобы быть на 100% уверенным, что плагин сам по себе не является вредоносным, вам нужно будет загрузить и проверить исходный код плагина из центра maven, соберите его с помощью maven и запустите. (И это также следует делать со всеми зависимостями и плагинами, которые необходимы для сборки, рекурсивно.)

Или вы используете Maven 3.2.3 или выше (с чистым репозиторием), который использует TLS для загрузки всех артефактов. Таким образом, атаки типа «человек посередине» невозможны, и вы получаете, по крайней мере, артефакты в том виде, в котором они находятся на центральном сервере maven.

Смотрите также:

person Martin Höller    schedule 14.08.2014

SSL-доступ к Central теперь доступен для оплаты токеном. Из https://blog.sonatype.com/people/2012/10/now-available-ssl-connectivity-to-central/:

Мы делаем SSL-соединение с Central доступным для всех, кто загружает компоненты с открытым исходным кодом, независимо от менеджера репозитория.

...

Чтобы обеспечить высочайший уровень производительности для тех, кто рассчитывает на SSL, мы защищаем службу токеном. Вы можете получить токен для своей организации, просто сделав пожертвование в размере 10 долларов, которое будет передано на цели с открытым исходным кодом.

person Joe    schedule 08.10.2013
comment
Это / было правильно, но теперь устарело. См. Объявление Sonatype: blog.sonatype.com/2014/07/ssl_connectivity_for_central - person Martin Höller; 14.08.2014

Не могли бы вы написать сценарий оболочки bash, используя GnuPG для проверки каждой сигнатуры?

Что-то вроде: for x in *.jar; do gpg --verify "${x}".asc; done

Очевидно, вам потребуются открытые ключи для всех подписей, прежде чем вы начнете.

person Geeb    schedule 17.01.2014
comment
Вам также нужно будет получить подписи, поскольку их обычно нет в вашем репо. - person Martin Höller; 14.08.2014

Предполагая, что вы хотите загружать только артефакты с действительными контрольными суммами, одним из вариантов было бы запустить OSS-версию Nexus и настроить ее так, чтобы она имела центральный прокси. Затем настройте свой файл settings.xml так, чтобы он загружался только из вашего репо (зеркальный тег в settings.xml). Затем вы можете настроить нексус, чтобы разрешить только артефакты с действительной контрольной суммой.

person Michael    schedule 18.01.2012
comment
Файлы * .asc являются подписями PGP. - person Barend; 13.10.2012