セキュリティのトラブルシューティング

セキュリティ・アクセスを監視するには、java.security.debugシステム・プロパティを設定します。これにより、実行中にどのトレース・メッセージを出力するかを決定します。セキュリティ・プロパティ、セキュリティ・プロバイダおよびTLS関連の設定を表示するには、javaコマンドで-XshowSettings:securityオプションを指定します。様々なシステム・プロパティまたは環境変数を使用して、JGSSおよびその他の関連テクノロジでデバッグを有効にできます。

java.security.debugシステム・プロパティ

すべてのデバッグ・オプションのリストを表示するには、次のようにhelpオプションを使用します。MyAppは、任意のJavaアプリケーションです。javaコマンドはデバッグ・オプションを出力し、MyAppを実行する前に終了します。

java -Djava.security.debug=help MyApp

ノート:

  • 複数のオプションを使用するには、オプションをカンマで区切ります。
  • JSSEでは、SSL/TLS/DTLSのトラブルシューティングのために動的なデバッグ・トレースもサポートされています。デバッグ・ユーティリティを参照してください。

次の表に、java.security.debugのオプションと各オプションの関連情報へのリンクを示します。詳細は、JavaDoc APIドキュメントのjava.security.debugを参照してください。

表1-5 java.security.debugのオプション

オプション 説明 関連情報
all すべてのデバッグ・オプションを有効にします。 なし
certpath

PKIX CertPathValidatorおよびCertPathBuilder実装のデバッグを有効にします。OCSPプロトコルのトレースを行う場合は、ocspオプションをcertpathオプションとともに使用します。OCSPリクエストおよびレスポンスのバイトの16進ダンプが表示されます。

このオプションとともに、次のオプションを使用できます:

  • ocsp: OCSPプロトコル交換をダンプします
  • verbose: OCSPリクエストおよびレスポンスのバイトの16進ダンプが表示されます
PKIプログラマーズ・ガイドの概要
configfile JAAS (Java Authentication and Authorization Service)構成ファイルのロード

Java認証・承認サービス(JAAS)リファレンス・ガイド

JAAS LoginユーティリティおよびJava GSS-APIを使用したセキュアなメッセージ交換

configparser JAAS構成ファイルの解析

Java認証・承認サービス(JAAS)リファレンス・ガイド

JAAS LoginユーティリティおよびJava GSS-APIを使用したセキュアなメッセージ交換

gssloginconfig Java GSS (Generic Security Services)ログイン構成ファイルのデバッグ

Java Generic Security Services: (Java GSS)およびKerberos

JAASおよびJava GSS-APIチュートリアル

javax.security.auth.login.Configuration: Configurationオブジェクトは、特定のアプリケーションで使用されるjavax.net.ssl.SSLEngineと、LoginModulesが呼び出される順番を指定します。

付録B: JAASログイン構成ファイル

Java SE認証、セキュアな通信、およびシングル・サインオンでの高度なセキュリティ・プログラミング

jar JARファイルの検証

Javaチュートリアルの「Verifying Signed JAR Files」

ノート:

システム・プロパティjdk.jar.maxSignatureFileSizeを使用して、署名付きJAR内の署名ファイルの最大サイズをバイト単位で指定します。デフォルト値は16000000 (16 MB)です。
jca

JCAエンジン・クラスのデバッグ

エンジン・クラスとアルゴリズム

KeyStore

Keystoreのデバッグ

キーストア

KeyStore

logincontext LoginContextの結果

Java認証・承認サービス(JAAS)リファレンス・ガイド

JAAS LoginユーティリティおよびJava GSS-APIを使用したセキュアなメッセージ交換

pcsc Java Smart Card I/OおよびSunPCSCプロバイダのデバッグ SunPCSCプロバイダおよびjavax.smartcardioパッケージ
pkcs11 PKCS11セッション・マネージャのデバッグ

PKCS#11リファレンス・ガイド

pkcs11keystore PKCS11 KeyStoreのデバッグ

PKCS#11リファレンス・ガイド

pkcs12 PKCS12 KeyStoreのデバッグ なし
properties java.security構成ファイルのデバッグ なし
provider セキュリティ・プロバイダのデバッグ

このオプションとともに、engine=<engines>オプションを使用できます。<engines>で指定されたJCAエンジンの出力のみが表示されます。この値は、カンマ区切りリストです。次の値を1つ以上含めることができます:

  • Cipher
  • KDF
  • KeyAgreement
  • KeyGenerator
  • KeyPairGenerator
  • KeyStore
  • Mac
  • MessageDigest
  • SecureRandom
  • Signature
Java暗号化アーキテクチャ(JCA)リファレンス・ガイド
securerandom SecureRandomのデバッグ SecureRandomクラス
sunpkcs11 SunPKCS11プロバイダのデバッグ PKCS#11リファレンス・ガイド
ts Timestampingのデバッグ なし
x509 X.509証明書のデバッグ

このオプションでは、avaオプションを使用できます。AVAコンポーネントに16進文字列として印刷不可/エスケープされていない文字が埋め込まれます

X.509証明書と証明書失効リスト(CRL)

デバッグ文の出力形式

java.security.debugオプションによって生成される各デバッグ出力文は次のようにフォーマットされます。

componentValue[threadId|threadName|sourceCodeLocation|timestamp]: <debug statement>

  • componentValueは、ログに記録されるセキュリティ・コンポーネント値です。
  • threadIdは、スレッドIDの16進値です。
  • threadNameは、ログ文を実行しているスレッドの名前です。
  • sourceCodeLocationは、filename:lineNumberの形式でこのログを呼び出すソース・ファイルおよび行番号です。
  • timestampは、yyyy-MM-dd kk:mm:ss.SSSの形式の日付と時刻です。
  • <debug statement>は、セキュリティ・コンポーネントからのデバッグ出力に対応します。

java -XshowSettings:securityオプション

javaコマンドの-XshowSettings:securityオプションを指定して、セキュリティ・プロパティ、セキュリティ・プロバイダおよびTLS関連の設定を表示できます。このオプションは、サード・パーティのセキュリティ・プロバイダの詳細がアプリケーションのクラス・パスまたはモジュール・パスに含まれ、そのようなプロバイダがjava.securityファイルで構成されている場合、それらを表示します。

また、-XshowSettings:security:<subcategory>を指定できます。<subcategory>は次のいずれかです:

  • all: すべてのセキュリティ設定を表示します
  • properties: セキュリティ・プロパティを表示します
  • providers: 静的セキュリティ・プロバイダ設定を表示します
  • tls: TLS関連のセキュリティ設定を表示します

Java Generic Security Servicesでのデバッグの有効化

Java Generic Security Services (JGSS)フレームワーク、Kerberos、SPNEGO、ネイティブJGSSブリッジおよびWindows上のSSPIブリッジでデバッグを有効にするには、次のシステム・プロパティまたは環境変数をtrueに設定します:

注意:

デバッグ情報には機密情報が含まれる場合があります。

表1-6 JGSSデバッグ・システム・プロパティ

システム・プロパティまたは環境変数 デバッグするJGSS機能
sun.security.jgss.debugシステム・プロパティ JGSSフレームワーク
sun.security.krb5.debugシステム・プロパティ Java Kerberos 5メカニズム
sun.security.spnego.debugシステム・プロパティ Java SPNEGOメカニズム
sun.security.nativegss.debugシステム・プロパティ ネイティブJGSSブリッジ
SSPI_BRIDGE_TRACE環境変数 Windows上のSSPIブリッジ

たとえば、JGSSフレームワークでデバッグを有効にするには、次のようにコマンドラインでsun.security.jgss.debugシステム・プロパティをtrueに設定します:

java -Dsun.security.jgss.debug=true MyApp

JAASログイン構成ファイルで、Krb5LoginModuleにdebug=trueを指定して、関連付けられたエントリでのデバッグを有効にできます。たとえば、次はJassSampleのデバッグを有効にします:

JaasSample {
    com.sun.security.auth.module.Krb5LoginModule required;
    debug=true;
};