java - 当 TrustManagerFactory 不是 TrustManagerFactory (Java)

标签 java security ssl junit pkix

我正在尝试向现有的应用程序服务器 (TomCat) 产品添加一些额外的 JUnit 测试。我遇到了(现有的和已部署的)自定义 TrustManager 的问题。这东西在生产中工作正常,但在 JUnit 中,给出异常。

定制的 TrustManager 仅从路径加载 keystore ,并隐含地信任我们自己的公共(public)证书。出于某种原因,在 JUnits 中使用它会导致以下行出现异常:

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

异常(exception):

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

无论使用何种提供程序/算法组合(“SunX509”、.getDefaultAlgorithm() 等),都会发生此异常。

任何见解将不胜感激。

最佳答案

好吧,看起来 PowerMock 搞砸了 SSL 问题,因此,您会加载错误的工厂。解决方案是在测试类上使用注释:

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

这取自https://groups.google.com/forum/#!topic/powermock/v4nreP2AnOQ

关于java - 当 TrustManagerFactory 不是 TrustManagerFactory (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14654639/

相关文章:

java - 如何将 AbstractContextLoaderInitializer 包含到我的 mvc 测试执行中?

java - Android:加载库并仅将其用于开发分支而不是发布

java - 在 weblogic : File format or extension not valid 上使用 apache poi 3.13 导出 xlsx

c# - WCF 服务、Windows 身份验证

ios - Xamarin IOS - HttpClient - 在一台 iPad 而不是另一台 iPad 上工作的 API

java - 将 Realm 对象传递给警报管理器的待处理 Intent

.net - .NET 中的多方加密?

security - Asterisk 上的 SRTP

python - 使用 python 创建 SSL 套接字

mysql - Cloud SQL 上的证书验证