I am developing an application that is making a request to third party service via a proxy.
My application is running on Weblogic10.3.0, and I encountered a problem with BAD_CERTIFICATE exception as follows.
javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received.
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireException(Unknown Source)
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireAlertSent(Unknown Source)
at com.certicom.tls.record.handshake.HandshakeHandler.fireAlert(Unknown Source)
at com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessages(Unknown Source)
at com.certicom.tls.record.MessageInterpreter.interpretContent(Unknown Source)
at com.certicom.tls.record.MessageInterpreter.decryptMessage(Unknown Source)
at com.certicom.tls.record.ReadHandler.processRecord(Unknown Source)
at com.certicom.tls.record.ReadHandler.readRecord(Unknown Source)
at com.certicom.tls.record.ReadHandler.readUntilHandshakeComplete(Unknown Source)
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.completeHandshake(Unknown Source)
at com.certicom.tls.record.WriteHandler.write(Unknown Source)
at com.certicom.io.OutputSSLIOStreamWrapper.write(Unknown Source)
There are many advices online saying that by adding -DuseSunHttpHandler=true will help solving the problem since the third party has upgraded their certificates (128bit to 256bit). The solution is working fine, however, the issue at hand now is that I cannot find an official article that clearly say that Certicom only supports up to 128bit and in order to solve it, we need to enable JSSE which, in my understanding, is used by SunHttpHandler.
Another concern here is, "is there a known impact from using SunHttpHandler?" I understand that from 10.3.3 or 10.3.5 onward, Certicom will be deprecated and use JSSE by default but upgrading weblogic is not an option at the moment.