2014-10-27 14 views
8

TL; DRM2e mit SSL-Zertifikat-basierten Authentifizierung

Wie Eclipse-built-in Maven machen zu einer HTTPS-Repository verbinden, die zertifikatsbasierte Authentifizierung verwendet?

Es scheint, dass m2e die Keystores finden kann, aber keine Verbindung herstellen kann. Befehlszeile Maven funktioniert wie ein Zauber, der genau die gleichen Schlüsselspeicher verwendet. Run as -> Maven build arbeitet mit externen Maven und nicht mit dem eingebetteten.

Problem

Ich habe ein Maven-Projekt mit einer Abhängigkeit. Diese Abhängigkeit ist in einem Repository verfügbar, das zusätzlich zur regulären Kombination aus Benutzername und Kennwort eine SSL-Zertifikat-basierte Authentifizierung verwendet. Ich muss es in Eclipse Luna mit dem eingebauten Maven machen. Alles, was ich bekommen kann, ist handshake_failure. Die Untersuchung der Protokolle zeigt, dass der eingebaute Maven kein passendes Zertifikat finden kann.

Wenn ich Run as -> Maven build mit einem externen Maven oder Befehlszeile Maven verwende, stellt es erfolgreich eine Verbindung zum Repository her und ruft das Artefakt genau nach Bedarf ab.

Das Interessante ist, sowohl externe als auch eingebettete Mavens haben die gleiche Version (3.2.3).

Einrichtung

gebe ich diese Parameter durch eclipse.ini:

-Djavax.net.ssl.trustStore=java.cacerts 
-Djavax.net.ssl.trustStorePassword=****** 
-Djavax.net.ssl.keyStore=private.cacerts 
-Djavax.net.ssl.keyStorePassword=****** 
-Djavax.net.debug=ssl,handshake 

Die trustStore Datei enthält:

  • die gesamte Zertifikatskette für das Repository I an (den Kettenenden verbinden mit einem selbstsignierten Zertifikat), von denen eines unter dem Alias ​​repository.location.url (literal Aufbewahrungsort hier, z. myrepository.com)
  • Zertifikat für maven zentrale

keyStore Die Datei enthält ein importiertes PKCS Zertifikat unter einem Pseudonym des Repository.

Es scheint überhaupt kein Problem mit dem Setup zu geben, da die Befehlszeile Maven funktioniert. Wenn ich externes Maven oder Kommandozeile eins verwende, funktioniert es. Wenn ich auf embedded eins wechsle (was immer zum Auflösen von Abhängigkeiten verwendet wird), erscheint handshake error.

Was mache ich falsch? Ich vermisse etwas völlig offensichtlich. Jede Hilfe wäre willkommen.

+0

Meine erste Schätzung wäre Proxy-Einstellungen in Eclipse, aber auch diese sollten den Keystore der VM verwenden: -/Odd. Welche Version von Eclipse, Java und m2e? –

+0

@AaronDigulla Eclipse Luna 4.4.1, m2e 1.5.0 (mit Maven 3.2.1) und 1.6.0 (3.2.3), Java 1.7 und 1.8 (beide jdk und jre) – Sorrow

+0

Und Sie haben die '-D' Optionen hinzugefügt nach der Zeile '-vmargs'? –

Antwort

3

Ich hatte genau das gleiche Problem: Eclipse konnte keine Verbindung zu externen Maven-Repository mit eingebetteten Maven Installation für den Fall, dass das Repository ein Client-SSL-Zertifikat benötigt.

Das Problem wurde durch die Aktualisierung auf den neuesten jvm (in meinem Fall - 1.8.0u52) und das Upgrade Eclipse m2e Plugin auf Version 1.6.1 (mit Eclipse Version 4.4.0) gelöst.

+0

scheint, dass das m2e Update den Trick gemacht hat, scheint 1.6.1 dieses Problem nicht zu haben – Sorrow

1

In Ihren Laufkonfigurationen wählen Sie Ihre Maven Build und dann die JRE Registerkarte am oberen Rand des Dialogs. Setzen Sie Ihre SSL-Parameter in den Textbereich der VM-Argumente.

das ist, was es für mich reparierte.

+2

Die Frage bezieht sich auf den eingebetteten Maven, d. H. Den, den Eclipse intern zur Aktualisierung des Projekts verwendet. Die externe, d. H. Eine, die für Laufkonfigurationen verwendet wird, funktioniert einwandfrei. – Sorrow

3

Optionen, die für mich

  • Installation Zertifikat java> jre> lib> Sicherheit> cacerts
  • Providing cacerts in Java-Lauf Konfiguration vm Argumente
  • Aktualisierung Eclipse neuesten funktionierte nicht Versionen wie Mars oder Neon
  • Aktualisierung maven plugin für Eclipse auf 1.7.0
für mich

Schritte, die das Problem

  • Download certificate file & in Eclipse hinzufügen bei Einstellungen aufgelöst> Remote-Systeme> SSL> hinzufügen
  • löschen .m2> Repositoryordner aller vorhandenen Dateien
  • öffnen Klicken Sie mit der rechten Maustaste auf Projekt und wählen Sie Maven> Projekt aktualisieren. Wählen Sie Force Update Schnappschüsse/Releases

aktualisiert am 9/19/2017

Verwandte Themen