Begrenzung der Java-SSL-Debug-Protokollierung

93

JVM-Flag verwenden

-Djavax.net.debug=ssl

produziert eine enorme Menge an Protokollierung, die Details für jedes SSL-Ereignis auf dem Server. Gibt es sowieso nur Protokollfehler? oder möglicherweise gibt es eine bessere Teilmenge dieser Flags, die eine sauberere Ausgabe erzeugen

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
quelle
3
Ich glaube, Sie erhalten die Fehler ausnahmsweise kostenlos. Es sind keine besonderen Maßnahmen erforderlich.
JWW
Dies wird speziell zum Debuggen verwendet. Daher die große Menge an Protokollen.
Javajavajava
1
Das Einstellen ""scheint nur einige Warnungen anzuzeigen.
NateS

Antworten:

84

Das Format für die Verwendung der zusätzlichen sslFlags lautet ssl:[flag]beispielsweise:

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

Alan MacK
quelle
2
Dies ist eine sehr positive Antwort, aber funktioniert sie wirklich für Menschen? Es scheint nicht für mich zu sein. Es gibt auch einen Fehlereintrag, dass diese Optionen nicht funktionieren würden.
Eis
1
@eis ja, es hat bei mir funktioniert. Vielleicht stellen Sie es nicht richtig ein und wenn ja, sollten Sie definitiv eine neue Frage stellen, damit wir Ihnen helfen können :)
Alfabravo
@Alfabravo Sie sagen also, der Fehlereintrag ist ungültig und diese funktionieren wie erwartet?
Eis
1
Nun, es ist von 2014, jdk7 und openjdk. Außerdem hat hier jemand kommentiert , dass die Debug-Protokollierung verbessert wurde, also gibt es das
Alfabravo
14

Ich finde auch, dass die Verwendung -Djavax.net.debug=ssl(oder sogar der Filter) zu umständlich ist, um HTTPS-Probleme zu beheben.

Es ist ein bisschen kompliziert , aber ich bevorzuge es, mitmproxy irgendwo auf einem billigen Server einzurichten und dann meine Java-Clients so zu konfigurieren, dass sie über diesen Proxy übertragen werden. Auf diese Weise kann ich HTTPS-Anforderungs- / Antwortflüsse auf dem Proxy bequem überprüfen und wiedergeben, ohne eine Reihe von Protokollen durchkämmen zu müssen.

Wenn Sie interessiert sind, habe ich eine Anleitung geschrieben, wie dies funktioniert: Debuggen von SSL in Java mit Mitmproxy

capotej
quelle
Ich denke, Ihr Ansatz ist nützlich, um Datenverkehr zu debuggen, der innerhalb einer TLS-Sitzung stattfindet, und um jedes Detail zu erfassen, um ihn zu ändern. Er ist jedoch viel weniger sinnvoll, wenn Sie ein Problem untersuchen, das auf der Ebene der TLS-Sitzung selbst auftritt. Ihr Proxy ändert und verbirgt, was anfänglich auf dieser Ebene geschieht.
jmd