一般的に言えば、できません(これはこの質問と非常によく似ています)。
JSSE APIでは、証明書の信頼は実際にはトラストストアによって決定されるのではなく、によって決定されTrustManager
ます。多くの場合、キーストア(トラストストア)で初期化されますが、これは必須ではありません。さらに、キーストア自体がファイルである必要はありません。デフォルトのトラストマネージャーAPIには、潜在的なトラストストアがどこでどのように使用されたかを確認できるものはありません。
には、元の状態に戻ることができるものはなくSSLSocket
、元の状態SSLSocketFactory
に戻ることがSSLContext
できるものも、トラストマネージャーを取得できるものもありません。
どのトラストストア/トラストマネージャーが現在アクティブであるかも、アプリケーションに大きく依存します。一般に、アプリケーションが作成している接続がデフォルトを使用していることを示すものはありません。デフォルトは、システムプロパティSSLContext
によって初期化できます。javax.net.ssl.*
アプリケーションは自由に独自SSLContext
のを初期化してソケットを作成できます(これは、特定の値を指定したときにTomcatがコネクタに対して行うことです)。
Java 6以降、デフォルト(現在)SSLContext
はグローバルに(を介して)変更することもできますSSLContext.setDefault(...)
。
デフォルトで使用されているものは、 JSSEリファレンスガイドから確認できます。残りは、各アプリケーションのドキュメントによって異なります。必要に応じて使用-Djavax.net.debug=SSL,trustmanager
すると役立つ場合がありますが、これはAPIアクセスではありません。
(ちなみに、-Djavax.net.ssl.keyStore
トラストストアではなく、デフォルトのキーマネージャのキーストアを設定します。)