Подтвердить что ты не робот

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 не вариант)

Благодарим вас за помощь.

4b9b3361

Ответ 1

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

mvn com.github.s4u.plugins:pgpverify-maven-plugin:check

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

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

См. также:

Ответ 2

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

Ответ 3

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

Делали подключение SSL к Центру доступным для всех, кто загружает компоненты с открытым исходным кодом независимо от менеджера хранилища.

...

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

Ответ 4

Не могли бы вы написать оболочку bash script с помощью GnuPG для проверки каждого sig?

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

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