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