Support Article
SSLCertificateException: None of the TrustManagers allowed
SA-11241
Summary
After upgrading to Pega 7.1.8 from PRPC 6.3 SP1, you experience certificate errors while trying to invoke Connect-SOAP.
Error Messages
[6/10/15 15:07:46:119 CDT] 00000023 stdout Z 2015-06-10 15:07:46,109 [ PegaRULES-Batch-50] [ STANDARD] [] [] ( internal.mgmt.Executable) ERROR Rule-Connect-SOAP - Exception
com.pega.pegarules.pub.services.ResourceUnavailableException: SOAP service failed
at com.pegarules.generated.activity.ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.step15_circum0(ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.java:3992)
at com.pegarules.generated.activity.ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.perform(ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.java:308)
at com.pega.pegarules.session.internal.mgmt.Executable.doActivity(Executable.java:3500)
at com.pegarules.generated.activity.ra_action_invoke_c28ff8c27ac24045d30f5561679549d1.step8_circum0(ra_action_invoke_c28ff8c27ac24045d30f5561679549d1.java:1037)
at com.pegarules.generated.activity.ra_action_invoke_c28ff8c27ac24045d30f5561679549d1.perform(ra_action_invoke_c28ff8c27ac24045d30f5561679549d1.java:189)
...
Caused by:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: None of the TrustManagers allowed for trust of the SSL certificate(s) provided by the remote server to which this client attempted a connection.
at com.ibm.jsse2.o.a(o.java:19)
...
at com.pega.apache.axis2.engine.AxisEngine.send(AxisEngine.java:438)
at com.pega.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at com.pega.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at com.pega.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at com.pegarules.generated.activity.ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.step14_circum0(ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.java:3891)
at com.pegarules.generated.activity.ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.perform(ra_action_invokeaxis2_e0a499f26a95053ac6300b525bd7d41f.java:291)
... 20 more
Caused by:
java.security.cert.CertificateException: None of the TrustManagers allowed for trust of the SSL certificate(s) provided by the remote server to which this client attempted a connection.
at com.pega.pegarules.integration.engine.internal.ssl.CompositeX509TrustManager.checkServerTrusted(CompositeX509TrustManager.java:161)
at com.ibm.jsse2.lb.a(lb.java:471)
Steps to Reproduce
Not Applicable
Root Cause
The root cause of this problem is a defect or misconfiguration in the operating environment. To start with, for any SSL certificate/handshake related issue, enable debug on:
1. Add “-Djava.net.debug=all” JVM argument to print all the transaction during SSL handshake.
2. Enable DEBUG on Pega package “com.pega.pegarules.integration.engine.internal.ssl”
It's a good practice to add keystore and truststore at the Pega level now for connectors because it's easier maintaince and portability. In this particular error scenario, the truststore was set at the IBM Websphere JVM level. Investigating the stack trace it was clear that the signer certificate and each of its intermediate certificates in the chain from the specified target host (external SOAP Endpoint) has not been located in the client Pega node’s (JVM’s) truststore.
When using the certificate from another entity (JVM), make sure to use the certificate chain to obtain the root CA certificate. The certificate chain, also known as the certification path, is a list of certificates used to authenticate an entity (JVM). The chain, or path, begins with the certificate of that entity, and each certificate in the chain is signed by the entity identified by the next certificate in the chain. The chain terminates with a root CA certificate. The root CA certificate is always signed by the CA itself. The signatures of all certificates in the chain must be verified until the root CA certificate is reached.
Resolution
Make the following change to the operating environment: Ensure that the signer certificates and each of its intermediate certificates in the certification path are imported to the Pega’s IBM WebSphere JVM’s truststore - cacerts. The same should be done for all the WebSphere JVMs participating in SSL communication on your PRPC cluster.
Published July 7, 2015 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.