Hi,
Wenn I run this code with CXF 2.1.3, then I get an Exception (see below) The
weird thing is that with CXF 2.1 I have
not this Exception.
So, my question: Why is SSL not accepted anymore?
With kind regards,
Harry van Rijn
private ModelPortType getSSLPort() {
TLSClientParameters tlsParams = new TLSClientParameters();
tlsParams.setSecureSocketProtocol("SSL");
tlsParams.setDisableCNCheck(true);
String truststorePassword =
modelProperties.getProperty(MODEL_CLIENT_TRUSTSTORE_PASSWORD);
System.out.println("Model
Truststore Password = ********");
String truststoreFilename =
modelProperties.getProperty(MODEL_CLIENT_TRUSTSTORE_FILENAME); String
truststorePath =
clientPropertiesDir + truststoreFilename; System.out.println("Model Truststore
Path = " + truststorePath);
File truststoreFile = new File(truststorePath);
try {
// Set Truststore
KeyStore truststore = KeyStore.getInstance("JKS");
truststore.load(new FileInputStream(truststoreFile),
truststorePassword.toCharArray()); TrustManagerFactory
trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(truststore);
TrustManager[] trustManager =
trustManagerFactory.getTrustManagers();
tlsParams.setTrustManagers(trustManager);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
String keystorePassword =
modelProperties.getProperty(MODEL_CLIENT_KEYSTORE_PASSWORD);
System.out.println("Model
Keystore Password = ********");
String keystoreFilename =
modelProperties.getProperty(MODEL_CLIENT_KEYSTORE_FILENAME); String
keystorePath =
clientPropertiesDir + keystoreFilename;
System.out.println("Model Keystore Path = " + keystorePath);
File keystoreFile = new File(keystorePath);
try {
// Set Keystore
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream(keystoreFile),
keystorePassword.toCharArray()); KeyManagerFactory
keyManagerFactory =
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keystore, keystorePassword.toCharArray()); KeyManager[]
keyManager =
keyManagerFactory.getKeyManagers();
tlsParams.setKeyManagers(keyManager);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
e.printStackTrace();
}
// Set Filters
FiltersType filter = new FiltersType();
filter.getInclude().add("SSL_RSA_WITH_RC4_128_MD5");
filter.getInclude().add("SSL_RSA_WITH_RC4_128_SHA");
filter.getInclude().add(".*_EXPORT_.*");
filter.getInclude().add(".*_EXPORT1024_.*");
filter.getInclude().add(".*_WITH_DES_.*");
filter.getInclude().add(".*_WITH_NULL_.*");
filter.getExclude().add(".*_DH_anon_.*");
tlsParams.setCipherSuitesFilter(filter);
JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean();
proxyFactory.setServiceClass(ModelPortType.class);
proxyFactory.setAddress(getModelSSLLocation());
ModelPortType port = (ModelPortType) proxyFactory.create();
System.out.println("SSL Url = " +
getModelSSLLocation() + ", SSL Client = " + port);
// Add HttpConduit
Client cxfClient = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit)cxfClient.getConduit();
httpConduit.setTlsClientParameters(tlsParams);
return port;
}
Model Truststore Password = ********
Model Truststore Path =
D:/opt/jboss-4.2.3.GA/server/default/conf/props/tpay/model/model-client.truststore
Model
Keystore Password = ********
Model Keystore Path =
D:/opt/jboss-4.2.3.GA/server/default/conf/props/tpay/model/model-client.keystore
log4j:WARN No
appenders could be found for logger
(org.apache.cxf.bus.spring.BusApplicationContext). log4j:WARN Please initialize
the log4j system properly.
13.11.2008 17:47:00 org.apache.cxf.bus.spring.BusApplicationContext
getConfigResources INFO: No cxf.xml configuration
file detected, relying on defaults. SSL Url =
https://localhost:8443/ModelWebServiceSSL/services/Model, SSL Client =
[EMAIL PROTECTED]
Aufruf Model WebService über SSL...
13.11.2008 17:47:03 org.apache.cxf.transport.https.SSLUtils getCiphersuites
INFO: The cipher suites have not been
configured, falling back to cipher suite filters. 13.11.2008 17:47:03
org.apache.cxf.transport.https.SSLUtils
getCiphersFromList INFO: The cipher suites have been set to
SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA,
SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA,
SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5,
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,
SSL_RSA_WITH_NULL_MD5, SSL_RSA_WITH_NULL_SHA, TLS_KRB5_WITH_DES_CBC_SHA,
TLS_KRB5_WITH_DES_CBC_MD5,
TLS_KRB5_EXPORT_WITH_RC4_40_SHA, TLS_KRB5_EXPORT_WITH_RC4_40_MD5,
TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA,
TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5.
13.11.2008 17:47:04 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception,
unwinding now
java.lang.IllegalArgumentException: SSL
at
com.sun.net.ssl.internal.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:133)
at
com.sun.net.ssl.internal.ssl.ProtocolList.<init>(ProtocolList.java:38) at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.setEnabledProtocols(SSLSocketImpl.java:2027)
at
org.apache.cxf.transport.https.SSLSocketFactoryWrapper.enableCipherSuites(SSLSocketFactoryWrapper.java:102)
at
org.apache.cxf.transport.https.SSLSocketFactoryWrapper.createSocket(SSLSocketFactoryWrapper.java:69)
at
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:365) at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:832)
at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1836)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1794)
at
org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42)
at
org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1854)
at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:595) at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) at
$Proxy46.status(Unknown Source)
at
com.tsystems.tpay.model.client.ModelPortType_ModelPort_Client.listStatusSSL(ModelPortType_ModelPort_Client.java:321)
at
com.tsystems.tpay.model.client.ModelPortType_ModelPort_Client.main(ModelPortType_ModelPort_Client.java:371)
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: SSL
at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145) at
$Proxy46.status(Unknown Source)
at
com.tsystems.tpay.model.client.ModelPortType_ModelPort_Client.listStatusSSL(ModelPortType_ModelPort_Client.java:321)
at
com.tsystems.tpay.model.client.ModelPortType_ModelPort_Client.main(ModelPortType_ModelPort_Client.java:371)
Caused by: java.lang.IllegalArgumentException: SSL
at
com.sun.net.ssl.internal.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:133)
at
com.sun.net.ssl.internal.ssl.ProtocolList.<init>(ProtocolList.java:38) at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.setEnabledProtocols(SSLSocketImpl.java:2027)
at
org.apache.cxf.transport.https.SSLSocketFactoryWrapper.enableCipherSuites(SSLSocketFactoryWrapper.java:102)
at
org.apache.cxf.transport.https.SSLSocketFactoryWrapper.createSocket(SSLSocketFactoryWrapper.java:69)
at
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:365) at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:832)
at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1836)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1794)
at
org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42)
at
org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1854)
at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:595) at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) ... 3
more