それらが使用されると、JSSE はこれらの設定を使用してデフォルトを構築しますX509TrustManager
(JRE デフォルトをオーバーライドします)。ただし、JSSE アーキテクチャでは原則としてデフォルトのトラスト マネージャーをキーストアから構築する必要がないため、JSSE API には、デフォルトのトラスト マネージャーの構築に使用されたキーストアにアクセスする手段はありません。
プロパティを介して渡されたトラスト ストアの内容を読みたい場合は、javax.net.ssl.trustStore*
自分でファイルを開く必要があります。
あなたが手に入れることができる最も近いものは、 defaultX509TrustManager
を使用したデフォルトになりますTrustManagerFactory
。
編集:
詳細については、OpenJDK の実装を参照してください。
(パブリック API の一部ではない)のロジックは、 (パブリック API の一部でもありません)から取得したでsun.security.ssl.DefaultSSLContextImpl
を初期化することです。TrustManagerFactory
KeyStore
TrustManagerFactoryImpl
KeyStore ks = TrustManagerFactoryImpl.getCacertsKeyStore("defaultctx");
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
これは with の動作と一致していTrustManagerFactory
ますtmf.init(null)
。これもデフォルトのキーストアに依存していましたが、それはパブリック API に記載されています。実際、実装 ( with ) は、 (キーストア パラメーターが null の場合にも呼び出されます)tmf.init(null)
に示すように、同じことを行います。TrustManagerFactoryImpl
engineInit
getCacertsKeyStore
どちらの場合も、KeyStore
変数はクラス メンバーに格納されません。これらの初期化メソッドを使用した後にアクセスできないのは単なるローカル変数です。
結果X509TrustManagerImpl
には確かに信頼できる証明書のリストが含まれていますが、trustedCerts
(a) プライベート メンバーであり、(b) JSSE のパブリック API の一部ではありません。
編集2:
ほとんどの場合は機能する可能性が高いが、機能することが保証されていないものが必要な場合は、この回答が役立ちます。デフォルトのトラスト ストアは必ずしも ではないcacerts
ことに注意してください。