トラストストア (Java keytool で作成) にアクセスするのにパスワードは必要ありませんか?
-
23-09-2019 - |
質問
Java keytool を使用してトラストストアを作成しました (CA 証明書を持たないサーバーのサーバー認証用)。しかし、私はただ奇妙なことに気づきました。私はクライアントを次のように起動しています。
java -Djavax.net.ssl.trustStore=<PATHSTUFF>/client.keystore -classpath <STUFF> Client
(注記:パスワードが指定されていません)
上記の呼び出しは機能します。
ただし、これを試してみると:
java -classpath <STUFF> Client
それは動作しません。(明らかに機能しません。トラストストアが必要です)。
このオプションを渡す必要があると予想していました(しかし、渡しませんでした)。
-Djavax.net.ssl.trustStorePassword=mypass
質問:トラストストアにアクセスするのにパスワードは必要ありませんか?パスワードは変更のみですか?キーストアについてはどうですか?
解決
パスワードは、キーストアの完全性を保護するために使用されます。あなたはどのストアのパスワードを提供しない場合、あなたはまだ、キーストアの内容を読み取ることができます。コマンドkeytool -list
は(空のパスワードでそれを使用)、この動作を示します。
他のヒント
@パスカル・thiventの優れた答えに加えます:
はキーストアのパスワードは2つの目的を持っている - 供給されていない場合は、keytool
あなたは、例えば新しい内容でストアの内容を置き換えてみましょうすることを拒否します既存または新規の証明書エントリを追加、削除することによります。
keytool
を使用してキーストアファイルを更新するために、書き込みアクセス権を持っている場合は、もちろん、パスワードを確認していなかった別のツールを使用して内容を置き換えることができます。そして、私たちはそうおそらく、我々は我々が望むものを書くことができ、店舗およびそのフォーマットは、パスワードなしで読み取り可能であることを知っているがあっています。
検証パスワードが来る-にどこのこと。店舗のエントリが書かアウトされている場合は、付属のストアパスワードはパスワードで塩漬けとして、ストアのコンテンツのダイジェストを計算するために使用されます。これは一方向ハッシュである/ダイジェストので、パスワードなしで、あなたは店の内容が改ざんされたか否かを確認することはできません。同様に、また、パスワードを知らない、悪意のある誰かが店の内容を変更し、そのパスワードによって生成されるダイジェスト・ハッシュを生成することはできません。
のは、なぜあなたは何のパスワードを供給していないときに、keytool
はちょうどそれは店が改ざんされていないことを確認することができないことを警告します。
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
keytool
は、再作成、既存のハッシュが現在のストアの内容とあなたが提供されたパスワードに基づいてダイジェストすることができませんでしたので、パスワードが間違っている、またはキーストアが侵害されるか - keytool
が言うことができないが、それはあなたやということを前提としてい店舗を読んで、ソフトウェアが知っています。
用語はストアの一般的に使用されている一方、それはキーストアに等しく指し、トラストのことに注意されたいです。以下は、一般的に、のキーストアのは、より頻繁に、のIDストアので、例えば使用されるようなアイデンティティと彼らの秘密、秘密鍵が含まれていサーバーでHTTPSを実行しています。 のトラストストアのより頻繁にだけ公開鍵と秘密鍵なしが含まれている、いない秘密ので、しかしなIDをどのように決定することが重要であるのクライアントの信託ます。
は、デフォルトの1が代わりに使用されます。私はあなたが要求するホストを信頼するために、トラストストアを指定する必要がありますことを、あなたがエラーを取得し、仮定しますか? $ JAVA_HOME / libに/セキュリティ/ jssecacertsのデフォルトのトラストストアが常駐ます。
デフォルトでは、JRE トラストストアのパスワードは「changeit」です。Java を使用してプログラムでデフォルトのトラスト ストア (cacerts) パスワードを変更する場合は、次の手順を実行してください。 このリンク.