Here is the code that I have been using:
SetSaleRequest request = new SetSaleRequest();
SetSaleResponse response = new SetSaleResponse();
// CXF CLIENT FOR MUTUAL TLS
// Setup TLS client params
TLSClientParameters tlsParams = new TLSClientParameters();
/* Get the JKS contents */
final char[] JKS_PASSWORD = "somepassword".toCharArray();
final char[] KEY_PASSWORD = "somepassword".toCharArray();
// KEYSTORE
final KeyStore keyStore = KeyStore.getInstance("JKS");
try (final InputStream is = new
FileInputStream("C:\\Users\\Owner\\IdeaProjects\\sales\\src\\main\\resources\\keystore.jks"))
{
keyStore.load(is, JKS_PASSWORD);
}
final KeyManagerFactory kmf =
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore, KEY_PASSWORD);
// TRUSTSTORE
final KeyStore trustStore = KeyStore.getInstance("JKS");
try (final InputStream is = new
FileInputStream("C:\\Users\\Owner\\IdeaProjects\\sales\\src\\main\\resources\\truststore.jks"))
{
trustStore.load(is, JKS_PASSWORD);
}
TrustManagerFactory tmf =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
tlsParams.setTrustManagers(tmf.getTrustManagers());
tlsParams.setDisableCNCheck(true);
//CODE FROM COLM
SSLContext sc = SSLContext.getInstance("TLS");
try {
sc.init(null, tmf.getTrustManagers(), null);
} catch (KeyManagementException e) {
e.printStackTrace();
}
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// SENDS DATA
request.setSale(Sale);
request.getPeople().add(person);
RSIService RSIService = new RSIService();
IRSIService iRSIService = RSIService.getPort(IRSIService.class);
// APACHE CXF CLIENT SETUP - MESSAGE SIGNING
((BindingProvider)iRSIService).getRequestContext().put(SecurityConstants.ENCRYPT_PROPERTIES,
"client_sign.properties");
((BindingProvider)iRSIService).getRequestContext().put(SecurityConstants.SIGNATURE_PROPERTIES,
"client_sign.properties");
((BindingProvider)iRSIService).getRequestContext().put(SecurityConstants.SIGNATURE_USERNAME,
"signingonly");
((BindingProvider)iRSIService).getRequestContext().put(SecurityConstants.CALLBACK_HANDLER,
ClientCallbackHandler.class.getName());
// Logging
LoggingOutInterceptor loi = new LoggingOutInterceptor();
LoggingInInterceptor lii = new LoggingInInterceptor();
org.apache.cxf.endpoint.Client client =
org.apache.cxf.frontend.ClientProxy.getClient(iRSIService);
org.apache.cxf.endpoint.Endpoint cxfEndpoint = client.getEndpoint();
cxfEndpoint.getOutInterceptors().add(loi);
cxfEndpoint.getInInterceptors().add(lii);
//Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
http.setTlsClientParameters(tlsParams);
// Sending the data
response = iRSIService.setSale(request);
System.out.println(response.isSuccess());
System.out.println("Sent");
}
If there is no obvious error above that could be the cause of the stack
trace do you have a link to defining the keys in spring?
Cheers
AG
--
Sent from: http://cxf.547215.n5.nabble.com/cxf-user-f547216.html