У меня есть проблема, которая сводит меня с ума.У меня есть приложение RCP с p2, которое при запуске вызывает веб-сервис (в https) для входа в систему.Сертификат самоподписан.Так как я не хочу изменять jre cacerts, я помещаю свои собственные cacerts в один из моих плагинов, я извлекаю этот плагин, используя функциональную функцию, поэтому у меня есть свои cacerts на FS, а не в jar.
Перед вызовом WSЯ устанавливаю свойства java
System.setProperty("javax.net.ssl.trustStore","mystruststorepath");
System.setProperty("javax.net.ssl.trustStorePassword","mystruststorepsw");
, теперь безумная вещь.
- Если я запускаю свое приложение из Eclipse IDE, все работает нормально
- Если я экспортирую свое приложение безp2 работает нормально
- Если я экспортирую свое приложение с p2, оно не работает, и я получаю ошибку, связанную с отсутствием сертификата в хранилище доверенных сертификатов
- Если я запускаю то же приложение из пункта 3, просто добавивв MyApp.ini опция -Djavax.net.ssl.trustStore = mystruststorepath работает
Я не знаю, как это может быть связано с p2, но я могу только представить, что p2Плагин применяет некоторый кэш хранилища доверенных сертификатов, поэтому изменять его программно не получится.Я не знаю, возможно ли это.
Кто-нибудь сталкивался с такой же проблемой?
Я хочу подтвердить это
- Я настроил затмениеjre runtime и выполнение с тем же jre, используемым экспортируемым продуктом
- Я несколько раз проверял путь к хранилищу сертификатов, и он правильный
Это ошибка, которую я получил
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target