ograniczanie logowania debugowania java ssl

96

Korzystanie z flagi JVM

-Djavax.net.debug=ssl

generuje ogromną ilość rejestrowanych danych, szczegółów każdego zdarzenia SSL na serwerze. Czy w ogóle ma to tylko rejestrować błędy? lub być może istnieje lepszy podzbiór tych flag, które dają bardziej uporządkowany wynik

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
źródło
3
Uważam, że w drodze wyjątków otrzymujesz błędy za darmo. Nie są wymagane żadne specjalne akcje.
jww
Jest to szczególnie używane do debugowania. Stąd ogromna ilość logów.
javajavajava
1
Ustawienie go na ""wydaje się pokazywać tylko kilka ostrzeżeń.
NateS

Odpowiedzi:

87

Format użycia dodatkowych sslflag to ssl:[flag]na przykład:

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

Alan MacK
źródło
2
to jest bardzo pozytywna odpowiedź, ale czy naprawdę działa na ludzi? Wydaje się, że to nie jest dla mnie. Jest też wpis o błędzie, że te opcje w rzeczywistości nie działają.
eis
1
@eis tak, zadziałało dla mnie. Może nie ustawiasz go prawidłowo, a jeśli tak, to definitywnie zadaj nowe pytanie, abyśmy mogli Ci pomóc :)
Alfabravo
@Alfabravo, więc mówisz, że wpis błędu jest nieprawidłowy i działają zgodnie z oczekiwaniami?
eis
1
Cóż, pochodzi z 2014 roku, jdk7 i openjdk. Ktoś też tutaj skomentował , że rejestrowanie debugowania zostało ulepszone, więc jest to
Alfabravo
14

Uważam również, że używanie -Djavax.net.debug=ssl(a nawet jego filtrów) jest zbyt uciążliwe do debugowania problemów z HTTPS.

Jest to trochę skomplikowane , ale wolę ustawić mitmproxy na jakimś tanim serwerze, a następnie skonfigurować moich klientów Java do obsługi proxy. W ten sposób mogę wygodnie sprawdzać i odtwarzać przepływy żądań / odpowiedzi HTTPS na serwerze proxy bez konieczności przeglądania wielu dzienników.

Jeśli jesteś zainteresowany, napisałem przewodnik, jak to osiągnąć: Debugowanie SSL w Javie przy użyciu mitmproxy

capotej
źródło
Myślę, że twoje podejście jest przydatne do debugowania ruchu, który ma miejsce w sesji TLS i posiadania wszystkich szczegółów na jego temat, możliwości modyfikowania go, ale ma o wiele mniej sensu podczas badania problemu występującego na poziomie samej sesji TLS. Twój proxy zmieni i ukryje to, co początkowo dzieje się na tym poziomie.
jmd