当TrustManagerFactory不是TrustManagerFactory(Java)时

2022-09-01 15:06:59

我正在尝试向现有的 App-Server (TomCat) 产品添加一些额外的 JUnit 测试。我在(现有和现场)自定义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/#!topic/powermock/v4nreP2AnOQ


答案 2