SSL debugging en la ejecución de un programa JAVA (handshake failures)

Normalmente las trazas que ofrece java en relación a problemas SSL no son muy clarificatorias, sobre todo en lo que respecta al handshake SSL, es difícil averiguar si es un fallo en los algoritmos de cifrado, versión de protocolo u otro problema. Cuando es un fallo de certificado sí que se ve más claro, ejemplo:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target{code}

Y un ejemplo de error de negociación (handshake):

Exception in thread "main" javax.net.ssl.SSLHandshakeException: 
  Received fatal alert: handshake_failure

Para obtener más información de la negociación de algoritmos de cifrado y protocolos durante la sesión SSL, podemos pasar a la ejecución del programa java como argumento lo siguiente:

-Djavax.net.debug=ssl,handshake

La ejecución nos mostrará con nivel de debug todo el proceso de handshake SSL. Si no fuera suficiente, se puede aumentar aún más el nivel de debug:

-Djavax.net.debug=ssl:handshake:verbose:keymanager:trustmanager -Djava.security.debug=access:stack