它看起来像一个标准问题,但我无法在任何地方找到明确的方向.
我有java代码尝试连接到可能具有自签名(或过期)证书的服务器.代码报告以下错误:
[HttpMethodDirector] I/O exception (javax.net.ssl.SSLHandshakeException) caught
when processing request: sun.security.validator.ValidatorException: PKIX path
building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
据我了解,我必须使用keytool并告诉java允许这种连接是可以的.
解决此问题的所有说明都假设我完全熟练使用keytool,例如
为服务器生成私钥并将其导入密钥库
有没有人可以发布详细说明?
我正在运行unix,所以bash脚本最好.
不确定它是否重要,但代码是在jboss中执行的.
我正在尝试做类似的事情
URL clientks = com.messaging.SubscriptionManager.class.getResource( "client.ks" );
String path = clientks.toURI().getPath();
System.setProperty( "javax.net.ssl.keyStore", path);
Run Code Online (Sandbox Code Playgroud)
其中client.ks是存储在我正在运行的jar文件中的com/messaging中的文件.
读取javax.net.ssl.keyStore的东西需要一个到jar中的client.ks文件的路径.如果可能的话,我宁愿不提取文件并放入客户端的机器上.那么可以在jar中引用一个文件吗?
这不起作用,因为getPath()返回null.还有另一种方法吗?
我有一个在weblogic服务器上运行的Java应用程序.该应用程序有两个不同的模块,使用SSL连接到外部Web服务 - 比如模块A和模块B.
模块A - 基于Axis构建 - 使用信任库A Moudle B - 基于Spring-ws构建 - 使用信任库B.
模块A存在.正在介绍模块B.
我需要能够根据调用的模块在JVM中动态设置信任库.
由于某些限制,我没有选项 - 创建自定义密钥管理器. - 使用一个信任库
我尝试使用System.setProperty im Module B codebase来设置truststore.但是,仅当模块B首先被调用时才有效.例如 - 假设我重新启动JVM然后调用模块A - 它在JVM中设置它自己的信任库然后我调用模块B - 它失败 - 它没有在JVM中设置它自己的信任库,即使我已经使用过System.setProperty方法.
我错过了什么,或者只是System.setProperty不会覆盖现有的设置值.如果是这样,我的选择是什么.
我在个人服务器上设置了自己的开放ID提供程序,并在我的apache配置文件中添加了重定向到https.当不使用安全连接时(当我禁用重定向时)我可以正常登录,但是使用重定向我无法使用此错误消息登录:
底层连接已关闭:无法为SSL/TLS安全通道建立信任关系.
我猜这是因为我使用的是自签名证书.
任何人都可以确认自签名证书是否是问题?如果不是,任何人都有任何想法是什么问题?