EJBCA如何创建用于webservice和java代码之间通信的密钥库(wsdl异常)

时间:2014-09-03 12:44:04

标签: java web-services exception keystore ejbca

我在ubuntu服务器上安装了带jboss的ejbca。 jboss的版本是5.1.0.GA,而ejbca的版本是4_0_10。 现在我将在我的java项目(eclipse)中使用ejbca函数,所以我实现了以下代码:

CryptoProviderTools.installBCProvider();    
        String urlstr = "https://EJBCA.cloud:8443/ejbca/ejbcaws/ejbcaws?wsdl";
        System.setProperty("javax.net.ssl.trustStore","C:\\Users\\PcEclipse.jks");
        System.setProperty("javax.net.ssl.trustStorePassword","Prova");
        System.setProperty("javax.net.ssl.keyStore","C:\\Users\\PcEclipse.jks");
        System.setProperty("javax.net.ssl.keyStorePassword", "Prova");
        QName qname = new QName("http://ws.protocol.core.ejbca.org/", "EjbcaWSService");
        EjbcaWSService service = null;
        try {
            service = new EjbcaWSService(new URL(urlstr),qname);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            System.out.println("errore nell'url");
        }
        EjbcaWS ejbcaraws = service.getEjbcaWSPort(); 

但我有例外

    Exception in thread "main" javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://EJBCA.cloud:8443/ejbca/ejbcaws/ejbcaws?wsdl. It failed with: 
        Got java.security.cert.CertificateException: No name matching EJBCA.cloud found while opening stream from https://EJBCA.cloud:8443/ejbca/ejbcaws/ejbcaws?wsdl.

使用ejbca web ui生成密钥库,创建新的权限ed在jks扩展中创建密钥库。 这是密钥库的问题?我如何创建正确的密钥库/信任库? 感谢

我已经生成了一个新的密钥库和信任库,但现在错误是:

Caused by: java.security.UnrecoverableKeyException: Password must not be null

1 个答案:

答案 0 :(得分:0)

我遇到了和你一样的问题。在我的情况下,证书CN似乎确实与服务器域名相匹配,因此我无法解决为什么它不起作用。

我还没有找到解决方案但是我能够使用以下代码片段确认我没有疯狂,这使得我可以比较服务器和证书主机名值。它还允许您通过返回true来忽略主机验证。

但请注意,验证不再发生,这是一个现在被绕过的安全控制。

我不能因为代码片段而受到赞誉,虽然我在网上发现了它,但无法回想起来源。

        HostnameVerifier hv = new HostnameVerifier() {
        public boolean verify(String urlHostName, SSLSession session) {
        System.out.println("Warning: URL Host: " + urlHostName + " vs. "
            + session.getPeerHost());
        return true;
        }
        };

        HttpsURLConnection.setDefaultHostnameVerifier(hv);