IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.


#TechXchangePresenter
 View Only
Expand all | Collapse all

XMLRPCSERVER, Mutual TLS

  • 1.  XMLRPCSERVER, Mutual TLS

    Posted Tue February 20, 2018 07:15 AM

    We have standalone instances of XMLRPCSERVER for managing communications from NATURAL to web services. We need to use a web service that requires mutual TLS authentication. How do you configure XMLRPCSERVER to present a client certificate when requested by the target service?


    #EntireX
    #Mainframe-Integration
    #webMethods


  • 2.  RE: XMLRPCSERVER, Mutual TLS

    Posted Tue February 20, 2018 07:41 AM

    Hello James,

    I think it is sufficient to set the Java system properties javax.net.ssl.keyStore and javax.net.ssl.keyStorePassword in the batch script which calls the XML RPC Server.


    #Mainframe-Integration
    #webMethods
    #EntireX


  • 3.  RE: XMLRPCSERVER, Mutual TLS

    Posted Wed February 21, 2018 10:30 AM

    Hi Rolf. Thank you. I have a standalone instance on my desktop in Windows. It works successfully with client auth, just as you described.
    I also have a standalone instance in UNIX. That is where we run our actual TEST and PROD instances so that is where I need it to work It is essentially the same configuration and uses a similar script and keystores and keys. Having struggled with it for a day, I cannot get it to work with the client auth service. I get the error below. There must be something different about the UNIX environment. We use the JVM supplied by Software AG. I guess I can open a support ticket, but is there a way to get a more detailed trace that might indicate the SSL problem. I feel like the runtime might be ignoring the keystore it is being pointed to.
    James.

    2018-02-21 09:03:23.699> EntireX-*orker-1( CP:HTTPTransport.invoke() I:SendReceive Exception: com.softwareag.wsstack.client.API.WSClientException: org.apache.axis2.AxisFault: Received fatal alert: bad_certificate
    at com.softwareag.wsstack.client.impl.WSOperationClientImpl.execute(WSOperationClientImpl.java:68)
    at com.softwareag.entirex.xml.rt.HttpTransportImpl.sendReceive(HttpTransportImpl.java:654)
    at com.softwareag.entirex.xml.rt.TransportHandler.sendReceive(TransportHandler.java:212)
    at com.softwareag.entirex.xml.rt.MessageHandler.processRPCMessage(MessageHandler.java:125)
    at com.softwareag.entirex.xml.rt.XMLRPCServerRPCMessageHandler.processMessage(XMLRPCServerRPCMessageHandler.java:152)
    at com.softwareag.entirex.aci.ServerRPCMessage.doNonConversation(ServerRPCMessage.java:56)
    at com.softwareag.entirex.aci.ServerWorker.run(ServerWorker.java:185)
    Caused by: org.apache.axis2.AxisFault: Received fatal alert: bad_certificate
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:98)
    at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
    at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:622)
    at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
    at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)


    #Mainframe-Integration
    #webMethods
    #EntireX


  • 4.  RE: XMLRPCSERVER, Mutual TLS

    Posted Wed February 21, 2018 10:53 AM

    Hi James,

    you can use -Djavax.net.debug=all to see all SSL activity of the JVM.


    #EntireX
    #webMethods
    #Mainframe-Integration


  • 5.  RE: XMLRPCSERVER, Mutual TLS

    Posted Wed February 21, 2018 11:04 AM

    Thank you again. I already have that parameter set, but the only part of the trace that indicates there is any problem is what I posted. The trace level is SUPPORT.
    James.


    #webMethods
    #Mainframe-Integration
    #EntireX


  • 6.  RE: XMLRPCSERVER, Mutual TLS

    Posted Wed February 21, 2018 11:04 AM

    Thank you again. I already have that parameter set, but the only part of the trace that indicates there is any problem is what I posted. The trace level is SUPPORT.
    James.


    #Mainframe-Integration
    #EntireX
    #webMethods


  • 7.  RE: XMLRPCSERVER, Mutual TLS

    Posted Wed February 21, 2018 11:11 AM

    You have to set the parameters in the batch script as below; note the " characters.

    SSLV=“-Djavax.net.ssl.keyStore=/opt/softwareag/RPC/keys.jks -Djavax.net.ssl.keyStorePassword=yourpassword -Djavax.net.ssl.trustStore=/opt/softwareag/RPC/cacerts”
    export SSLV

    The Java SSL trace is not written to the log file, it goes to stdout.


    #webMethods
    #Mainframe-Integration
    #EntireX


  • 8.  RE: XMLRPCSERVER, Mutual TLS

    Posted Wed February 21, 2018 11:25 AM

    Here is my full startup script:-
    cd /opt/WebApps/XMLRPCSERVERDELUNIX $0
    SSL=“-Djavax.net.ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl -Djavax.net.ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImpl -Djavax.net.ssl.keyStore=/opt/WebApps/XMLRPCSERVERDELUNIX/EntireX/xmlfirewallsupport.jks -Djavax.net.ssl.keyStorePassword=[password omitted]-Djavax.net.ssl.trustStore=/opt/WebApps/XMLRPCSERVERDELUNIX/EntireX/ExxCACert.jks -Djavax.net.ssl.trustStorePassword=[password omitted] -Djavax.net.debug=all”
    CLASSPATH=“.:/opt/WebApps/XMLRPCSERVERDELUNIX/EntireX/classes/entirex.jar:/opt/WebApps/XMLRPCSERVERDELUNIX/WS-Stack/lib/wsstack-client.jar:/opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.security.crypto.jar”
    echo $CLASSPATH
    /opt/WebApps/XMLRPCSERVERDELUNIX/jre18/bin/java “$SSL” -Dentirex.sdk.default.trace.propertiesfile=entirex.trace.properties -classpath “$CLASSPATH” com.softwareag.entirex.xml.rt.XMLRPCServer -p entirex.xmlrpcserver.properties -c entirex.xmlrpcserver.configuration.xml
    exit 0


    #webMethods
    #EntireX
    #Mainframe-Integration


  • 9.  RE: XMLRPCSERVER, Mutual TLS

    Posted Thu February 22, 2018 04:50 AM

    Try changing the parameters so the default SSL implementation of the JVM is used.
    Remove
    -Djavax.net.ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl
    -Djavax.net.ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImpl
    /opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.security.crypto.jar


    #webMethods
    #EntireX
    #Mainframe-Integration


  • 10.  RE: XMLRPCSERVER, Mutual TLS

    Posted Thu February 22, 2018 07:16 AM

    Hi Rolf. Since it’s evidently an SSL problem, I had tried that already but it will not run without any one of those. Without them I just get class not found errors. It was many years ago, but I think I added those on the advice of Software AG support when we were trying to get this running. I think I’m using the JVM supplied by Software AG. Where should the default SSL implementation be and how can I make the service use it?


    #EntireX
    #Mainframe-Integration
    #webMethods


  • 11.  RE: XMLRPCSERVER, Mutual TLS

    Posted Thu February 22, 2018 08:17 AM

    Hi James,
    I see that you opened a support ticket. So let’s continue this via support.


    #webMethods
    #EntireX
    #Mainframe-Integration


  • 12.  RE: XMLRPCSERVER, Mutual TLS

    Posted Thu February 22, 2018 08:20 AM

    OK Rolf. Thank you for your assistance so far,
    James.


    #EntireX
    #webMethods
    #Mainframe-Integration