Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何测试X509TrustManager子类?_Java_Ssl_Junit_Cryptography_X509certificate - Fatal编程技术网

Java 如何测试X509TrustManager子类?

Java 如何测试X509TrustManager子类?,java,ssl,junit,cryptography,x509certificate,Java,Ssl,Junit,Cryptography,X509certificate,我将javax.net.ssl.X509TrustManager子类化,这样我就可以使用私有ssl证书。现在我正试图为我的类编写JUnit测试,但测试用例总是给我一个空指针异常 例如,我的checkClientTrusted()实现是一个空方法。但是,当我使用X509Certificate[]的有效实例(以及任何类型的字符串)调用该方法时,JUnit会在测试代码行报告一个NullException。关于我遗漏了什么,有什么建议吗?将“X509TrustManager”子类化只是为了使用自签名证书

我将
javax.net.ssl.X509TrustManager子类化,这样我就可以使用私有ssl证书。现在我正试图为我的类编写JUnit测试,但测试用例总是给我一个空指针异常


例如,我的
checkClientTrusted()
实现是一个空方法。但是,当我使用
X509Certificate[]
的有效实例(以及任何类型的字符串)调用该方法时,JUnit会在测试代码行报告一个
NullException
。关于我遗漏了什么,有什么建议吗?

将“X509TrustManager”子类化只是为了使用自签名证书(我想这就是“私有SSL证书”的意思?)有点过分了。使用此类证书的更简单方法是:

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


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

将“X509TrustManager”子类化只是为了使用自签名证书(我想这就是“私有SSL证书”的意思)有点过火。使用此类证书的更简单方法是:

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



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

问题是我从junit.framework.TestCase
中对测试类进行了子类化,这导致我的
@BeforeClass
设置方法没有被调用(因此我在那里实例化的变量仍然为null)。删除后,现在一切正常。

问题是我从junit.framework.TestCase中对测试类进行了子类化,这导致我的
@BeforeClass
设置方法没有被调用(因此我在那里实例化的变量仍然为null)。删除后,现在一切正常。

您的checkClientTrusted()的空实现不安全。不要这样做。@EJP-事实上不,这对我的应用程序来说并不是不安全的。我没有时间详细说明,但就我所做的而言,这是一个空的不是问题。RFC 2246不同意您的意见。您的checkClientTrusted()的空实现是不安全的。不要这样做。@EJP-事实上不,这对我的应用程序来说并不是不安全的。我没有时间详细说明,但对于我正在做的事情,这是一个空的不是问题。RFC 2246不同意您的意见。请注意,信任库中的证书应标记为
受信任的
。出于完整性考虑,
keytool
可能会要求任何人都信任它。哦,恩海:)我的应用程序的用户几乎无法通过电子邮件附件安装这个私人应用程序(这是在Android应用程序中),更不用说在他们的手机上安装新的证书了。我的应用程序非常安全。我确实需要JUnit测试方面的帮助,而不是我在这里的实现。您可以将信任/密钥存储作为应用程序的一部分分发(您甚至可以将其嵌入JAR文件),而不让用户自己安装证书。虽然它会起作用,但我认为不应该鼓励您采用子类化“X509TrustManager”的方式X509TrustManager的实现应用于对证书执行其他检查,如使用OCSP检查其状态@猫头鹰城堡!:-)看起来IBM的网站管理员断开了“高级JSSE开发人员自定义SSL”一文的链接。网站管理员和政客一样有用。@jww他们甚至为了自己的支持文档而破坏了它:。我再也找不到原来的文章了。这真是太遗憾了,因为它写得很好。请注意,信任库中的证书应该标记为
trusted
。出于完整性考虑,
keytool
可能会要求任何人都信任它。哦,恩海:)我的应用程序的用户几乎无法通过电子邮件附件安装这个私人应用程序(这是在Android应用程序中),更不用说在他们的手机上安装新的证书了。我的应用程序非常安全。我确实需要JUnit测试方面的帮助,而不是我在这里的实现。您可以将信任/密钥存储作为应用程序的一部分分发(您甚至可以将其嵌入JAR文件),而不让用户自己安装证书。虽然它会起作用,但我认为不应该鼓励您采用子类化“X509TrustManager”的方式X509TrustManager的实现应用于对证书执行其他检查,如使用OCSP检查其状态@猫头鹰城堡!:-)看起来IBM的网站管理员断开了“高级JSSE开发人员自定义SSL”一文的链接。网站管理员是关于