如何测试X509TrustManager子类?

Con*_*rad 1 java ssl junit cryptography x509certificate

我进行了子类化,javax.net.ssl.X509TrustManager因此我可以使用私有SSL证书.现在我正在尝试为我的类编写一个JUnit测试,但测试用例一直给我一个空指针异常.

例如,我的实现checkClientTrusted()是一个空方法.但是,当我使用(假设的)有效实例X509Certificate[](以及任何类型的String )调用该方法时,JUnit会报告NullException该行的测试代码.关于我缺少什么的任何建议?

Jas*_*kes 7

为了使用自签名证书而对"X509TrustManager"进行子类化(我假设你的'私有SSL证书'是什么意思?)有点矫枉过正.使用此类证书的更简单方法是:

将密钥库文件(信任库)与证书(或用于创建自签名证书的CA的证书)一起使用,并将应用程序指向该证书.您所要做的就是确保'SSLContext'了解您的信任库.有关详细信息,请查看(写得非常好)文章 Custom SSL for advanced JSSE developers.从技术上讲,这比使用全局JRE信任库更安全,因为只有您的证书才会被接受为有效.

使用"keytool"将证书(或用于创建自签名证书的CA的证书)添加到JRE的全局信任库.全局JRE信任库位于'$ JAVA_HOME/lib/security/cacerts'中.JRE信任库的密码始终是"changeit".虽然这种方式显然会使部署更加困难,但有时您无法控制JRE安装.