0

キーストア(「キーストア」または「トラストストア」のどちらに使用されているかに関係なく)は、load()メソッドを使用して作成された後に初期化されます。1つのバージョンではInputStream、キーストアファイルに対応するファイルと、ファイルを復号化するためのパスワードが必要です。プログラムでメソッドにパスワードを提供することは、私には奇妙に思えます。

たとえば、サーバーはキーストアを使用して秘密鍵と関連する証明書を格納します。キーストアに存在する情報は賢明であるため、パスワードで保護されています。load()プログラムでメソッドにパスワードを渡す際の問題は何ですか?ベストプラクティスは何ですか?

他の例ですが、今のところトラストストアに関するものです。クライアントには、信頼できるCAの証明書を格納するトラストストアがあります。私が理解しているように、トラストストアにはサーバーの証明書は含まれていませんが、サーバーの証明書の検証を可能にするCAの証明書のみが含まれています。私が見ているトラストストアの例の1つは、JRE(securityフォルダー内cacerts)に存在するものです。構成を見ると、デフォルトのパスワードで保護されていることがわかりますchangeit。トラストストアはキーストアを使用して実装されていることを理解しているので、パスワードを使用して暗号化する必要があります(またはオプションですか?)。しかし、トラストストアは一般に公開情報(信頼できるCAの証明書)をファイルに保存するので、なぜパスワードを変更することが推奨されるのでしょうか。

ありがとう

4

1 に答える 1

2

プログラムでメソッドにパスワードを提供することは、私には奇妙に思えます。

なぜこれが奇妙になるのかわかりません。アプリケーションは、ある時点でキーストアの内容を取得できる必要があります。どういうわけか、パスワードを渡す必要があります。それをメソッドに渡すことはload()、他のソリューションよりも意味がありません (もちろん、ハードコーディングは避けてください)。または、代わりにコールバックを使用するメソッドを使用できます。それが適切でないと思われる場合は、PKCS#11 プロバイダーとハードウェア トークンを使用するか (ただし、パスワード/PIN をどこかに入力する必要があります)、Apple KeychainStore などを使用できます (パスワードが入力されていない場合)。使用されますが、OS キーチェーン サービスが処理します)。

トラストストアに関しては、実際には 2 つのパスワードが使用されています。JKS 形式を使用する場合は、異なる場合があります。1 つはキーストア自体を保護し、もう 1 つはプライベート エントリへのアクセスを保護します ( getKey)。この場合、鍵ストアのパスワードを使用して、許可されていない第三者がトラストストアを変更 (および独自の CA またはサーバー証明書を追加) するのを防ぎます。

于 2012-07-18T12:58:55.740 に答える