ограничение ведения журнала отладки java ssl

96

Использование флага JVM

-Djavax.net.debug=ssl

производит огромное количество журналов, деталей для каждого SSL-события на сервере. Есть ли способ, чтобы он регистрировал только ошибки? или, возможно, есть лучшее подмножество этих флагов, которые производят более аккуратный вывод

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
Я считаю, что вы получаете ошибки бесплатно в виде исключений. Никаких специальных действий не требуется.
jww
Это специально используется для отладки. Отсюда огромное количество журналов.
javajavajava
1
Установка этого значения, ""кажется, показывает только несколько предупреждений.
NateS

Ответы:

87

Например, формат использования дополнительных sslфлагов ssl:[flag]:

-Djavax.net.debug=ssl:recordили -Djavax.net.debug=ssl:handshake.

Алан МакК
источник
2
это ответ, получивший большое количество голосов, но действительно ли он работает для людей? Похоже, это не для меня. Также есть запись об ошибке, что эти параметры на самом деле не работают.
eis
1
@eis да, у меня это сработало. Может быть, вы неправильно его настраиваете, и если да, вам следует окончательно задать новый вопрос, чтобы мы могли вам помочь :)
Alfabravo
@Alfabravo, значит, вы говорите, что запись об ошибке недействительна, и они работают должным образом?
eis
1
Ну это с 2014 года, jdk7 и openjdk. Кроме того, здесь кто-то прокомментировал, что ведение журнала отладки было улучшено, так что вот оно
Alfabravo
14

Я также считаю, что использование -Djavax.net.debug=ssl(или даже его фильтров) слишком громоздко для отладки проблем HTTPS.

Это немного сложно , но я предпочитаю установить mitmproxy где-нибудь на дешевом сервере, а затем настроить мои Java-клиенты на прокси через него. Таким образом, я могу с комфортом проверять и воспроизводить потоки запросов / ответов HTTPS на прокси-сервере без необходимости просматривать кучу журналов.

Если вам интересно, я написал руководство о том, как это сделать: Отладка SSL в Java с помощью mitmproxy

капотей
источник
Я думаю, что ваш подход полезен для отладки трафика, происходящего внутри сеанса TLS, и получения всех подробностей о нем, возможности его изменения, но он имеет гораздо меньший смысл при исследовании проблемы, возникающей на уровне самого сеанса TLS. Ваш доверенность изменит и скроет то, что изначально происходит на этом уровне.
jmd