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