Java WebStart没有';不加载密钥库

Java WebStart没有';不加载密钥库,java,web-services,ssl,jboss,Java,Web Services,Ssl,Jboss,我有一个基本上是WS-client的独立应用程序。它连接到部署在JBossAS7上的安全WS,该WS使用证书进行身份验证。当我从IDE启动应用程序时,一切正常(keystore和truststore都已加载),但当我尝试作为webstart应用程序时,麻烦就来了 问题是从webstart启动时,密钥库没有加载。另一方面,信任库可以完美地加载。 Webstart控制台输出: trustStore is: /home/matijav/certs/matija.truststore trustStor

我有一个基本上是WS-client的独立应用程序。它连接到部署在JBossAS7上的安全WS,该WS使用证书进行身份验证。当我从IDE启动应用程序时,一切正常(keystore和truststore都已加载),但当我尝试作为webstart应用程序时,麻烦就来了

问题是从webstart启动时,密钥库没有加载。另一方面,信任库可以完美地加载。 Webstart控制台输出:

trustStore is: /home/matijav/certs/matija.truststore
trustStore type is : JKS
trustStore provider is : 
init truststore
adding as trusted cert:
Subject: CN=matija, OU=Dev, O=SL, L=Lj, ST=Slo, C=SI
Issuer:  CN=matija, OU=Dev, O=SL, L=Lj, ST=Slo, C=SI
Algorithm: RSA; Serial number: 0x52b45d57
Valid from Fri Dec 20 16:08:07 CET 2013 until Thu Mar 20 16:08:07 CET 2014
因此,当我的应用程序尝试连接到WS时,我得到
com.sun.xml.internal.WS.client.ClientTransportException:HTTP传输错误:javax.net.ssl.SSLHandshakeException:收到致命警报:坏的\u证书。

以下是我的配置:

在JNLP中,我定义了所有权限

<security>
    <all-permissions/>
</security>
我检查keystore/truststore和pass是否匹配。如果组合匹配所有设置为系统属性:

System.setProperty("javax.net.ssl.keyStore", keyStorePath);
System.setProperty("javax.net.ssl.trustStore", trustStorePath);
System.setProperty("javax.net.ssl.keyStorePassword", keyStorePass);
System.setProperty("javax.net.ssl.trustStorePassword", trustStorePass);
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
然后,WS被称为:

port = new MyService(url).getMyPort();
final Map<String,Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, connection.getEndpoint());

//and here, when the app tries to authenticate to JBoss WS mechanism, I get bad_certificate exception.
port.callMethod(params);
port=newmyservice(url).getMyPort();
最终映射requestContext=((BindingProvider)端口).getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_属性,connection.getEndpoint());
//在这里,当应用程序尝试向JBoss WS-mechanism进行身份验证时,我得到了坏的\u证书异常。
调用方法(params);
据我所知,问题在于没有加载密钥库,因此显然WS调用失败。有人能向我解释为什么没有加载密钥库以及我缺少了什么吗

谢谢,,
Matija

我尝试使用CA签署的证书而不是自签名来构建应用程序,以消除java安全警告,但这没有帮助。我还使用了另一个由CA签署的证书来对WS进行身份验证,但密钥库仍然没有加载。有人知道出了什么问题吗?任何帮助都将不胜感激。我可以说,在Java中使用证书和密钥库是非常困难的!所以,对应用程序使用CA签名证书对callMethod没有帮助。。。因为服务没有使用CA签名的证书。我说的对吗
callMethod
必须根据Java webstart连接到具有有效证书的服务。。。您注意到的是没有加载密钥库,我认为您的观察是正确的,这就是我发现这个问题的原因。
port = new MyService(url).getMyPort();
final Map<String,Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, connection.getEndpoint());

//and here, when the app tries to authenticate to JBoss WS mechanism, I get bad_certificate exception.
port.callMethod(params);