Когда 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

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

Любое понимание будет с благодарностью.

1 ответ

Решение

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

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

это взято из https://groups.google.com/forum/

Другие вопросы по тегам