limitar el registro de depuración ssl de java

96

Usando el indicador JVM

-Djavax.net.debug=ssl

está produciendo una enorme cantidad de registros, los detalles de cada evento SSL en el servidor. ¿Hay alguna forma de que solo registre errores? o posiblemente hay un subconjunto mejor de estas banderas que producen una salida más ordenada

all            turn on all debugging
ssl            turn on ssl debugging

The following can be used with ssl:

    record       enable per-record tracing
    handshake    print each handshake message
    keygen       print key generation data
    session      print session activity
    defaultctx   print default SSL initialization
    sslctx       print SSLContext tracing
    sessioncache print session cache tracing
    keymanager   print key manager tracing
    trustmanager print trust manager tracing
    pluggability print pluggability tracing

    handshake debugging can be widened with:
    data         hex dump of each handshake message
    verbose      verbose handshake message printing

    record debugging can be widened with:
    plaintext    hex dump of record plaintext
    packet       print raw SSL/TLS packets
Steve Renyolds
fuente
3
Creo que obtienes los errores de forma gratuita a modo de excepciones. No se necesitan acciones especiales.
jww
Esto se usa específicamente para depurar. De ahí la gran cantidad de registros.
javajavajava
1
Configurarlo en ""parece mostrar solo algunas advertencias.
NateS

Respuestas:

87

El formato para usar las sslbanderas adicionales es, ssl:[flag]por ejemplo:

-Djavax.net.debug=ssl:recordo -Djavax.net.debug=ssl:handshake.

Alan MacK
fuente
2
esta es una respuesta muy votada, pero ¿realmente funciona para las personas? No parece ser para mí. También hay una entrada de error que indica que estas opciones no funcionarían.
EIS
1
@eis sí, funcionó para mí. Tal vez no lo esté configurando correctamente y, si es así, definitivamente debería hacer una nueva pregunta para que podamos ayudarlo :)
Alfabravo
@Alfabravo, ¿estás diciendo que la entrada del error no es válida y que funcionan como se esperaba?
EIS
1
Bueno, es de 2014, jdk7 y openjdk. Además, alguien comentó aquí que se mejoró el registro de depuración, por lo que está eso
Alfabravo
14

También encuentro que usar -Djavax.net.debug=ssl(o incluso sus filtros) es demasiado engorroso para depurar problemas de HTTPS.

Es un poco complicado, pero lo que prefiero hacer es configurar mitmproxy en un servidor barato en algún lugar y luego configurar mis clientes Java para usarlo como proxy. De esta manera, puedo inspeccionar y reproducir cómodamente los flujos de solicitud / respuesta HTTPS en el proxy sin tener que revisar un montón de registros.

Si está interesado, he escrito una guía sobre cómo hacer esto: Depurar SSL en Java usando mitmproxy

capotej
fuente
Creo que su enfoque es útil para depurar el tráfico que está sucediendo dentro de una sesión TLS y tener todos los detalles sobre él, pudiendo modificarlo, pero tiene mucho menos sentido cuando se investiga un problema que ocurre en el nivel de la sesión TLS en sí. Tu proxy cambiará y ocultará lo que está sucediendo inicialmente en ese nivel.
jmd