Подтвердить что ты не робот

Когда TrustManagerFactory не является TrustManagerFactory (Java)

Я пытаюсь добавить дополнительный JUnit-тест к существующему продукту App-Server (TomCat). У меня возникла проблема с (существующим и полевым) настраиваемым TrustManager. Эта вещь отлично работает в производстве, но во время JUnit дает исключение.

Индивидуальный TrustManager просто загружает хранилище ключей из пути и неявно доверяет нашим собственным публичным сертификатам. По какой-то причине использование этого в JUnits вызывает исключение в следующей строке:

TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("PKIX");    

Исключение:

java.security.NoSuchAlgorithmException:  class configured for TrustManagerFactory: com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$PKIXFactory not a TrustManagerFactory

Это исключение происходит независимо от того, какие используются комбинации Provider/Algorithm ( "SunX509",.getDefaultAlgorithm() и др.).

Любое понимание будет оценено.

4b9b3361

Ответ 1

Хорошо, похоже, что PowerMock сталкивается с проблемами SSL и, таким образом, вы загружаете неправильный factory. Решением для этого является использование аннотации в тестовом классе:

@PowerMockIgnore("javax.net.ssl.*")

это взято из https://groups.google.com/forum/#!topic/powermock/v4nreP2AnOQ