38 Stimmen

Maven prüft Signaturen von heruntergeladenen pom/jar-Dateien

Ich habe versucht, herauszufinden, ob das zentrale Repository SSL-fähig ist, aber das ist es wahrscheinlich nicht. Ich habe festgestellt, dass es Signaturen für jede jar- und pom-Datei im zentralen Maven-Repository gibt. Also möchte ich zumindest die Signaturen aller heruntergeladenen Maven-Dateien (pom/jar) überprüfen.

Das Beispiel aus 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

Mir ist klar, dass ich für jedes Repository öffentliche Schlüssel importieren muss, und damit habe ich kein Problem. Ich vermute, dass die öffentlichen Schlüssel für Maven Central hier zu finden sind https://svn.apache.org/repos/asf/maven/project/KEYS .

Es gibt im Internet eine Fülle von Anleitungen, wie man mit Maven signiert. Ich habe jedoch keine Informationen darüber gefunden, wie man Maven (2 oder 3) zwingt, Signaturen von heruntergeladenen jar/pom-Dateien zu überprüfen. Ist das möglich?

(Nexus Professional ist keine Option)

Vielen Dank für Ihre Hilfe.

11voto

Martin Höller Punkte 2562

Nun, da die Menschen zu erkennen scheinen, dass dies ein echtes Sicherheitsproblem ist (wie in dieser Blog-Beitrag (der Blog scheint nicht erreichbar zu sein, hier ist ein archivierte Version des Blogs)), gibt es eine Plugin zur Überprüfung von PGP-Signaturen . Sie können die Signaturen für alle Abhängigkeiten Ihres Projekts mit dem folgenden Befehl überprüfen:

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

Um 100%ig sicher zu sein, dass das Plugin selbst nicht bösartig ist, müssen Sie natürlich die Quelle für das Plugin von Maven Central, erstellen Sie es mit Maven und führen Sie es aus. (Und dies sollte auch mit allen Abhängigkeiten und Plugins geschehen, die für den Build benötigt werden, rekursiv).

Oder Sie verwenden Maven 3.2.3 oder höher (mit einem sauberen Repository), das TLS für das Herunterladen aller Artefakte verwendet. Damit sind Man-in-the-Middle-Angriffe unmöglich und Sie erhalten zumindest die Artefakte so, wie sie in der Maven-Zentrale vorliegen.

Siehe auch:

2voto

Geeb Punkte 611

Könnten Sie ein Bash-Shell-Skript mit GnuPG schreiben, um jede Sig zu verifizieren?

Etwa so: for x in *.jar; do gpg --verify "${x}".asc; done

Natürlich benötigen Sie die öffentlichen Schlüssel für alle Signaturen, bevor Sie beginnen.

1voto

Michael Punkte 5725

Angenommen, Sie wollen nur Artefakte mit gültigen Prüfsummen herunterladen, wäre eine Möglichkeit, die OSS-Version von Nexus zu verwenden und sie so zu konfigurieren, dass sie einen Proxy von central hat. Dann konfigurieren Sie Ihre settings.xml so, dass nur von Ihrem Repository geladen wird (mirror tag in settings.xml). Sie können Nexus dann so konfigurieren, dass nur Artefakte mit einer gültigen Prüfsumme zugelassen werden.

1voto

Joe Punkte 26653

Der SSL-Zugang zu Central ist jetzt gegen Zahlung eines Tokens verfügbar. Von https://blog.sonatype.com/people/2012/10/now-available-ssl-connectivity-to-central/ :

Wir stellen jedem, der Open-Source-Komponenten herunterlädt, unabhängig vom Repository-Manager eine SSL-Verbindung zu Central zur Verfügung.

...

Um denjenigen, die sich auf SSL verlassen, ein Höchstmaß an Leistung zu garantieren, sichern wir den Dienst mit einem Token. Sie können ein Token für Ihre Organisation erhalten, indem Sie einfach eine Spende von 10 $ leisten, die für Open-Source-Zwecke gespendet wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X