HOWTO · Java

So beschränken Sie die Java-SSL-Debug-Protokollierung

Heute werden wir etwas über das Debuggen von Java SSL, seine Bedeutung, verschiedene Dienstprogramme und die Verwendung eines oder mehrerer in einem einzigen Befehl lernen.

Auf dieser Seite

Die Java-SSL/TLS-Debug-Protokollierung kann Details zu Handshake, Zertifikaten und Records offenlegen, wenn eine Verbindung fehlschlägt. Sie kann helfen einzugrenzen, was die JVM tut, aber sie identifiziert möglicherweise keine Probleme außerhalb des TLS-Austauschs.

Warum die Java-SSL-Debug-Protokollierung bei der Fehlerbehebung von Verbindungen hilft

Setzen Sie die Systemeigenschaft javax.net.debug, wenn Sie die JVM starten. Das breite Argument -Djavax.net.debug=ssl aktiviert SSL-bezogene Diagnosen und kann eine erhebliche Ausgabe erzeugen, verwenden Sie es daher für eine gezielte Untersuchung und prüfen Sie die Protokolle, bevor Sie sie weitergeben. Detaillierte Verbindungsprotokolle können sensible Informationen enthalten.

Fügen Sie das Argument zu den JVM-Optionen für Ihre Anwendung hinzu. Aktualisieren Sie bei einem Anwendungsserver dessen Startkonfiguration und starten Sie den Server neu; das Ändern der Option wirkt sich nicht auf eine JVM aus, die bereits läuft.

Die Java-SSL-Debug-Protokollierung mit Debug-Spezifizierern beschränken

Um die Diagnosen einzugrenzen, hängen Sie einen Spezifizierer an den Eigenschaftswert an. Zum Beispiel fordert -Djavax.net.debug=ssl:handshake SSL-Handshake-Diagnosen an. Eine Form mit mehreren Spezifizierern ist -Djavax.net.debug=ssl:handshake,record,session. Dies sind repräsentative Formen: Unterstützte Spezifizierer, Trennzeichen und Details können je nach Java-Laufzeitumgebung variieren. Prüfen Sie die Dokumentation für die von Ihnen ausgeführte JVM, wenn eine Option nicht erkannt wird oder nicht die erwarteten Details liefert.

Die folgenden angegebenen Spezifizierer beschreiben gängige Diagnosebereiche. Verfügbarkeit und Umfang der Details können je nach Laufzeitumgebung unterschiedlich sein; all kann besonders umfangreich sein.

Debug-Spezifizierer Diagnosezweck
all Umfassendes Debugging in allen unterstützten Bereichen.
ssl SSL/TLS-bezogenes Debugging.
record Tracing auf Record-Ebene; nützlich bei der Untersuchung von Protokolldaten.
handshake Tracing von Handshake-Nachrichten.
keygen Details zur Schlüsselgenerierung.
session Session-Aktivität.
defaultctx Initialisierung des Standard-SSL-Kontexts.
sslctx Tracing des SSL-Kontexts.
sessioncache Aktivität des Session-Cache.
keymanager Aktivität des Schlüsselmanagers.
trustmanager Aktivität des Trust-Managers.
data Hexadezimale Daten für Handshake-Nachrichten, sofern unterstützt.
verbose Ausführlichere Ausgabe von Handshake-Nachrichten, sofern unterstützt.
plaintext Record-Daten im Klartext, sofern unterstützt. Behandeln Sie diese Ausgabe als sensibel.
packet Rohe Details zu SSL/TLS-Paketen, sofern unterstützt.

Beginnen Sie mit dem engsten Spezifizierer, der zur Frage passt, und entfernen Sie dann die JVM-Option, wenn die Untersuchung abgeschlossen ist. Diese JVM-Startargumente sind Konfigurationsbeispiele, und es werden keine Ausführungsnachweise für ihr Laufzeitverhalten oder ihre Ausgabe bereitgestellt.