问题
I am getting Soap Response from this code
SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();
SOAPConnection connection = sfc.createConnection();
SOAPMessage soapMessageResponse = connection.call(soapRequest, new URL(serviceLocation));
How can I make it SSL based?
I know how to create SSLSocketFactory
from SSLContext
giving my specified keystore.
How can I tell SOAPConnection
class about SSLSocketFactory
or SSLContext
? So that my communication can be secured.
I do not want to set keystore in system property or xml file. I am using Websphere 7.
EDIT:
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at com.ibm.ws.webservices.engine.soap.SOAPConnectionImpl.callJAXWSDispatch(SOAPConnectionImpl.java:416)
... 49 more
Caused by: javax.xml.soap.SOAPException: javax.xml.ws.WebServiceException: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
at com.ibm.ws.webservices.engine.xmlsoap.saaj13only.SOAPConnectionJAXWS.call(SOAPConnectionJAXWS.java:72)
... 54 more
Caused by: javax.xml.ws.WebServiceException: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
回答1:
Log in to Admin console and add the certificate via SSL certificate and key management > SSL configurations > NodeDefaultSSLSettings > Key stores and certificates > NodeDefaultTrustStore > Signer certificates
回答2:
Typically you dont need to do anything apart from giving your endpoint URL that starts with https://.
Axis2 uses http-commons which in turn will use JSSE takes care of the security. So as long as you have configured your JSSE correctly it should work out of the box with no changes except passing the https in URL.
回答3:
Imran, did you try this tip? "you have to retrieve the signer certificates from the remote host you are trying to connect and adding them to the WAS server trust store"
http://turanunes.wordpress.com/2011/05/04/cwpki0022e-ssl-handshake-failure/
回答4:
This line of code will not work in case of SSL.
SOAPMessage soapMessageResponse = connection.call(soapRequest, new URL(serviceLocation));
In order to get response through SSL from axis2 webservice you need to open streams like given [here][1]
.
来源:https://stackoverflow.com/questions/10897881/axis-2-webservice-ssl-communication