membatasi logging debug java ssl

96

Menggunakan flag JVM

-Djavax.net.debug=ssl

menghasilkan jumlah pencatatan yang luar biasa, detail untuk setiap peristiwa SSL di server. Apakah ada cara untuk hanya memilikinya mencatat kesalahan? atau mungkin ada subset yang lebih baik dari flag ini yang menghasilkan keluaran yang lebih rapi

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
sumber
3
Saya yakin Anda mendapatkan kesalahan secara gratis melalui pengecualian. Tidak ada tindakan spesial yang diperlukan.
jww
Ini secara khusus digunakan untuk debugging. Karenanya jumlah log yang sangat banyak.
javajavajava
1
Menyetelnya menjadi ""sepertinya hanya menampilkan beberapa peringatan.
NateS

Jawaban:

87

Format penggunaan sslflag tambahan adalah ssl:[flag]sebagai contoh:

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

Alan MacK
sumber
2
ini adalah jawaban yang sangat disukai, tetapi apakah ini benar-benar berhasil untuk orang-orang? Sepertinya tidak untuk saya. Ada juga entri bug bahwa opsi ini tidak benar-benar berfungsi.
eis
1
@eis ya, itu berhasil untuk saya. Mungkin Anda tidak mengaturnya dengan benar dan, jika demikian, Anda harus mengajukan pertanyaan baru agar kami dapat membantu Anda :)
Alfabravo
@Alfabravo jadi Anda mengatakan entri bug tidak valid dan ini berfungsi seperti yang diharapkan?
eis
1
Nah, ini dari 2014, jdk7 dan openjdk. Juga, seseorang berkomentar di sini bahwa penebangan debug telah ditingkatkan, jadi ada itu
Alfabravo
14

Saya juga menemukan bahwa menggunakan -Djavax.net.debug=ssl(atau bahkan filternya) terlalu rumit untuk men-debug masalah HTTPS.

Ini sedikit terlibat, tetapi yang saya lebih suka lakukan adalah mengatur mitmproxy di server murah di suatu tempat dan kemudian mengkonfigurasi klien Java saya ke proxy melalui itu. Dengan cara ini saya dapat dengan nyaman memeriksa dan memutar ulang permintaan / respons HTTPS mengalir pada proxy tanpa harus menyisir banyak log.

Jika Anda tertarik, saya telah menulis panduan tentang cara menjalankannya: Debugging SSL di Java menggunakan mitmproxy

capotej
sumber
Saya pikir pendekatan Anda berguna untuk men-debug lalu lintas yang terjadi di dalam sesi TLS dan memiliki setiap detail di dalamnya, dapat memodifikasinya, tetapi jauh lebih tidak masuk akal saat menyelidiki masalah yang terjadi di tingkat sesi TLS itu sendiri. Proksi Anda akan mengubah dan menyembunyikan apa yang awalnya terjadi pada level itu.
jmd