Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从jboss中部署的服务到第三方api网关的SOAP请求_Java_Soap_Jboss_Client_Sslcontext - Fatal编程技术网

Java 从jboss中部署的服务到第三方api网关的SOAP请求

Java 从jboss中部署的服务到第三方api网关的SOAP请求,java,soap,jboss,client,sslcontext,Java,Soap,Jboss,Client,Sslcontext,我有一个服务(部署在JBossAS7中的SpringBootWar),它使用JavaSOAP客户端(我使用SpringWS),需要使用相互身份验证调用api网关公开的第三方Web服务器。我可以通过直接使用jks文件初始化ssl上下文发出请求,如下所示 SSLContext sslcontext = getSSLContext(); SSLConnectionSocketFactory factory = new SSLConnectionSocketFactory(sslcontext, new

我有一个服务(部署在JBossAS7中的SpringBootWar),它使用JavaSOAP客户端(我使用SpringWS),需要使用相互身份验证调用api网关公开的第三方Web服务器。我可以通过直接使用jks文件初始化ssl上下文发出请求,如下所示

SSLContext sslcontext = getSSLContext();
SSLConnectionSocketFactory factory = new SSLConnectionSocketFactory(sslcontext, new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });
HttpClientBuilder httpClientBuilder = HttpClients.custom(); 

... }



private SSLContext getSSLContext() throws KeyStoreException, NoSuchAlgorithmException, IOException, KeyManagementException, java.security.cert.CertificateException, UnrecoverableKeyException {

        KeyStore ks = KeyStore.getInstance("JKS");
        ks.load(keyStore.getInputStream(), keyStorePassword.toCharArray());
        logger.debug("Loaded keystore: " + keyStore.getURI().toString());
        try {
            keyStore.getInputStream().close();
        } catch (IOException e) {
        }
        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        keyManagerFactory.init(ks, keyStorePassword.toCharArray());
        KeyStore ts = KeyStore.getInstance("JKS");
        ts.load(trustStore.getInputStream(), trustStorePassword.toCharArray());
        logger.debug("Loaded trustStore: " + trustStore.getURI().toString());
        try {
            trustStore.getInputStream().close();
        } catch (IOException e) {
        }
        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        trustManagerFactory.init(ts);

        SSLContextBuilder sslContextBuilder = SSLContexts.custom();
        try {
            sslContextBuilder = SSLContexts.custom().loadKeyMaterial(ks, keyStorePassword.toCharArray());
        } catch (UnrecoverableKeyException e) {
            e.printStackTrace();
        }
        sslContextBuilder.loadTrustMaterial(ts, new TrustAllStrategy());
        return sslContextBuilder.build();
    }
但是我想使用jboss配置中定义的ssl上下文

 <tls>
    <key-stores>
        <key-store name="MyKeyStore">
            <credential-reference clear-text="MyPass"/>
            <implementation type="JKS"/>
            <file path="/home/jboss/mycertstore.jks"/>
        </key-store>
    </key-stores>
    <key-managers>
        <key-manager name="myKM" algorithm="PKIX" key-store="myKeyStore">
            <credential-reference store="credstore" alias="mycred_alias"/>
        </key-manager>
    </key-managers>
    <trust-managers>
        <trust-manager name="myTM" key-store="myKeyStore"/>
    </trust-managers>
    <client-ssl-contexts>
        <client-ssl-context name="mySSLName" protocols="TLSv1.2" key-manager="myKM" trust-manager="myTM"/>
    </client-ssl-contexts>
</tls>

是否可以在我的客户端中使用SSLContext“mySSLName”作为javax.net.ssl.SSLContext

希望我的问题清楚

谢谢