m2e с аутентификацией на основе сертификата ssl

TL; DR

Как заставить Eclipse встроенный Maven подключиться к репозиторию HTTPS, который использует аутентификацию на основе сертификатов?

Кажется, что m2e может найти keystores, но не может подключиться. Командная строка Maven работает как шарм, используя точно такие же хранилища ключей. Run as → Maven build работает с внешним Maven, а не со встроенным.

проблема

У меня есть проект Maven с зависимостью. Эта зависимость доступна в репозитории, который использует аутентификацию на основе сертификата SSL в дополнение к обычной комбинации имени пользователя и пароля. Мне нужно заставить его работать в Eclipse Luna со встроенным Maven. Все, что я могу получить, это handshake_failure. Исследование журналов показывает, что встроенный Maven не может найти соответствующий сертификат.

Когда я использую Run as → Maven build с внешним Maven или командной строки Maven, он успешно подключается к репозиторию и получает артефакт точно по мере необходимости.

Интересно, что и внешние, и встроенные Mavens имеют ту же версию (3.2.3).

Настроить

Я передаю эти параметры через 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

Файл trustStore содержит:

  • всю цепочку сертификатов для репозитория, к которому я подключаюсь (цепочка заканчивается самозаверяющим сертификатом), один из которых хранится под псевдонимом repository.location.url (здесь находится литеральный репозиторий, например myrepository.com)
  • сертификат для центрального центра

Файл keyStore содержит импортированный сертификат PKCS под псевдонимом репозитория.

Кажется, что проблема не связана с настройкой, поскольку работает Maven. Если я использую внешний Maven или командной строки, он работает. Если я перейду на встроенный (который всегда используется для разрешения зависимостей), появляется handshake error.

Что я делаю не так? Мне может быть что-то совершенно очевидное. Любая помощь будет оценена по достоинству.

Ответ 1

У меня была такая же проблема: Eclipse не смог подключиться к внешнему хранилищу maven, используя встроенную установку maven, если для репозитория требуется сертификат SSL для клиента.

Проблема была решена путем обновления до последнего jvm (в моем случае - 1.8.0u52) и обновления плагина Eclipse m2e до версии 1.6.1 (с Eclipse версии 4.4.0).

Ответ 2

Варианты, которые не работали для меня

  • Установка сертификата в java> jre> lib> security> cacerts
  • Предоставление cacerts в java run конфигурации vm аргументы
  • Обновление eclipse до последних версий, таких как марс или неон
  • Обновление плагина maven для eclipse до 1.7.0

Шаги, которые решили проблему для меня

  • Загрузите файл сертификата и добавьте в eclipse в настройках> Удаленные системы> SSL> Добавить
  • Очистить.m2> папку репозитория всех существующих файлов
  • Откройте eclipse, щелкните правой кнопкой мыши проект и выберите Maven> Обновить проект. Выберите Force Update of Snapshots/Releases

обновлено 19.09.2017

Ответ 3

В ваших конфигурациях запуска выберите свою сборку maven, а затем выберите вкладку JRE в верхней части диалогового окна. Поместите ваши параметры SSL в текстовую область аргументов VM.

что это исправило это для меня.

Ответ 4

Мне удалось это исправить, установив внешний мавен в затмении. Eclipse-> Окно → Preferences-> Maven → Installations-> Добавить