Java SSL デバッグ ロギングを制限する
今日は、Java SSL デバッグ、その重要性、さまざまなユーティリティ、および 1つのコマンドで 1つまたは複数を使用する方法について学習します。
Java SSL デバッグとその重要性
Java Web アプリケーションで SSL (Secure Socket Layer) を処理するのは楽しいことではありません。特に、トラブルシューティングやログのデバッグを行わないと、ブラウザにページを表示できません
という醜いページが表示される場合はなおさらです。
これらの状況では、アプリケーションを簡単に デバッグ可能 にし、詳細なログを確認できる SSL の重要性が高まります。 これらのログは、このエラーについて私たち (開発者) をガイドします。
使用できるさまざまなデバッグ ユーティリティがあります。 以下は、アプリケーション サーバー JVM (Java 仮想マシン) ですべての SSL デバッグ ログを有効にするものです。
次の JVM コマンド ライン パラメータを追加した後、アプリケーション サーバーを再起動することを忘れないでください。
-Djavax.net.debug=ssl
問題は、上記のコマンドがすべての SSL デバッグを有効にすることです。これは、一部のシナリオでは必要ない場合があります。
では、Java SSL デバッグ ロギングを制限するにはどうすればよいでしょうか。 以下でそれを学びましょう。
Java SSL デバッグ ロギングを制限する
-Djavax.net.debug=ssl
コマンドを使用すると、サーバー上の各 SSL イベントの膨大な量のログと詳細が記録されます。 プロジェクトの要件に従って、どのように制限できますか?
これを解決するには、ロギングをデバッグするために SSL が必要なデバッグ指定子 (フラグとも呼ばれます) をコロン (:
) で区切って指定する必要があります。 たとえば、次のように handshake
についてログに記録できます。
-Djavax.net.debug=ssl:handshake
ssl
または all
のいずれであっても、javax.net.debug
プロパティ値を指定し、その後にデバッグ指定子 (オプション) を指定する必要があることに注意してください。
複数のデバッグ指定子を使用することもでき、これらのオプション (デバッグ指定子) に区切り記号を含める必要はありませんが、区切り記号 (:
または ,
) を使用すると読みやすくなります。 明確に理解するには、次の例を参照してください。
-Djavax.net.debug=ssl:handshake, record, session
上記のコマンドでは、コロン (:
) を複数のデバッグ指定子の間のセパレータとして使用することもできます。 どのセパレータを使用しても問題ないことを覚えておいてください。 デバッグ指定子の順序も重要ではありません。
以下は、知っておくと便利な オプション です。
デバッグ指定子 (オプション) | 説明 |
---|---|
all |
すべてのデバッグをオンにします。 |
ssl |
すべての ssl デバッグをオンにします。 |
record |
ssl とともに使用され、レコードごとのトレースを有効にします。 |
handshake |
ssl とともに使用され、すべての handshake メッセージを出力します。 |
keygen |
ssl とともに使用され、キー生成データを出力します。 |
session |
ssl とともに使用され、session アクティビティを出力します。 |
defaultctx |
ssl で使用して、デフォルトの ssl 初期化を出力できます。 |
sslctx |
ssl および print ssl コンテキスト トレースで使用されます。 |
sessioncache |
ssl とともに使用され、session キャッシュ トレースを出力します。 |
keymanager |
ssl とともに使用され、キー マネージャーのトレースを出力します。 |
trustmanager |
これは、トラスト マネージャーのトレースを出力し、ssl と共に使用されます。 |
data |
これは、handshake デバッグを拡張するために使用できるすべての handshake メッセージの 16 進ダンプです。 |
verbose |
これは、verbose handshake メッセージの出力と、handshake デバッグの幅を広げるために使用されます。 |
plaintext |
record のデバッグを拡張するために使用される、レコード plaintext の 16 進ダンプ。 |
packet |
生の SSL /TLS パケットを出力し、record デバッグを拡張するためにも使用されます。 |
ニーズやプロジェクトの要件に応じて、それらのいずれかを使用できます。