java - EJBCA如何创建用于web服务和java代码之间通信的 keystore (wsdl异常)

标签 java web-services exception keystore ejbca

我已经在 ubuntu 服务器上安装了 ejbca 和 jboss。 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)

    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.

keystore 是通过 ejbca Web ui 创建新的端点并在 jks 扩展中创建 keystore 生成的。 这是 keystore 的问题?我如何创建正确的 keystore /信任库? 谢谢

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

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

最佳答案

我也遇到了和你一样的问题。就我而言,证书 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);

关于java - EJBCA如何创建用于web服务和java代码之间通信的 keystore (wsdl异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644681/

相关文章:

java - 如何将 sqlite json 列转换为 Spark 字符串或结构?

java - axis2 网络服务。在哪里放置我自己的配置

c++ - 没有 RTLD_GLOBAL 的类型信息、共享库和 dlopen()

Android DDMS 异常?

java - 如何将数组转换为不带逗号/括号的字符串格式并添加括号作为值

java - 从 Google Drive API v3 下载 Gdoc 修订版

java - SwingUtilities.getLocationOnScreen() 的问题;

web-services - OPC UA 和 REST Web 服务之间的区别

Java:从 wsdl 获取示例请求 XML

java - 抛出异常时会发生什么?