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

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.


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.