我目前正在使用SSL编写网络TCP服务器.在生产中,我们最终会要求客户使用证书进行身份验证.
为了在紧急情况下撤销证书,我们还想建立一个CRL.
我的问题是:Java是否开箱即用检查CRL(如果提供证书)或者我是否需要手动实施此类检查?
为了测试,我准备了一个带有CRL集的证书,但是Java似乎没有尝试验证它(我将它放入本地Web服务器并且没有访问权限).
我只找到了com.sun.net.ssl.checkRevocation = true VM选项,但显然它不查询CRL.设置为java.security.debug = certpath的 VM调试不会生成任何输出,要么......
Java似乎在其子系统中有相关的类(例如java.security.cert.X509CRLSelector),但它显然没有发挥作用.
我使用Apache Mina作为客户端服务器编写了一个小型的maven风格的项目,它基于密钥/信任库和客户端/服务器的自签名证书初始化SSLContext,可以在这里以ZIP存档的形式下载:https://www.dropbox.com /s/3fqmd1v9mn2a5ve/ssltest.zip?dl=0
是否可以在运行时通过Maven加载远程工件,例如使用特定的(Maven)ClassLoader?
对于我的用例,遗留软件使用URLClassLoader在启动测试框架期间提取包含一些资源文件的JAR.
问题是我们目前只使用指向存储库的固定URL而根本不使用Maven工件解析.
将它添加到项目依赖项是没有选择的,因为我们想要从外部配置文件引用特定版本(使用不同版本的打包用例运行测试框架而不更改代码).
我希望你得到我想要达到的目标 - 它不一定是最漂亮的解决方案,因为我们目前依赖于固定的URL模式,我想依赖于本地maven设置.