limitando registro de depuração java ssl

94

Usando o sinalizador JVM

-Djavax.net.debug=ssl

está produzindo uma quantidade enorme de logs, os detalhes de cada evento SSL no servidor. Existe alguma maneira de apenas registrar erros? ou possivelmente há algum subconjunto melhor desses sinalizadores que produzem uma saída mais organizada

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
fonte
3
Eu acredito que você obtém os erros gratuitamente por meio de exceções. Nenhuma ação especial é necessária.
jww
Isso é usado especificamente para depuração. Daí a grande quantidade de toras.
javajavajava
1
Definir como ""parece mostrar apenas alguns avisos.
NateS

Respostas:

85

O formato para usar os sslsinalizadores adicionais é, ssl:[flag]por exemplo:

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

Alan MacK
fonte
2
esta é uma resposta altamente votada, mas realmente funciona para as pessoas? Não parece ser para mim. Há também uma entrada de bug informando que essas opções não funcionariam de fato.
eis
1
@eis sim, funcionou para mim. Talvez você não esteja configurando corretamente e, em caso afirmativo, você deve definitivamente fazer uma nova pergunta para que possamos ajudá-lo :)
Alfabravo
@Alfabravo, então você está dizendo que a entrada do bug é inválida e funciona conforme o esperado?
eis
1
Bem, é de 2014, jdk7 e openjdk. Além disso, alguém comentou aqui que o registro de depuração foi melhorado, então há isso
Alfabravo
14

Também acho que usar -Djavax.net.debug=ssl(ou mesmo seus filtros) é muito complicado para depurar problemas de HTTPS.

É um pouco complicado, mas o que eu prefiro fazer é configurar o mitmproxy em um servidor barato em algum lugar e, em seguida, configurar meus clientes Java para proxy através dele. Dessa forma, posso inspecionar e reproduzir confortavelmente os fluxos de solicitação / resposta HTTPS no proxy sem ter que vasculhar vários registros.

Se você estiver interessado, escrevi um guia sobre como fazer isso: Depurando SSL em Java usando mitmproxy

capotej
fonte
Acho que sua abordagem é útil para depurar o tráfego que está acontecendo dentro de uma sessão TLS e ter todos os detalhes sobre ele, podendo modificá-lo, mas faz muito menos sentido ao investigar um problema que está acontecendo no nível da própria sessão TLS. Seu proxy mudará e ocultará o que está acontecendo inicialmente naquele nível.
jmd