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.
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? –
@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
Und Sie haben die '-D' Optionen hinzugefügt nach der Zeile '-vmargs'? –