2016-07-06 27 views
3

自己署名証明書を使用してTLSサーバーに接続したいので、カスタムのトラストストアが必要です。 keytoolは、証明書をインポートするために絶対にパスワードが必要なようですが、実際には信頼ストアをパスワードで保護する必要はありません。標準パスワード「changeit」を使用すると動作しますが、パスワードを一切持たないことをお勧めします。keytoolを使用してパスワードなしでJavaトラストストアを作成できますか?

これは「キーストア」ではなく「トラストストア」なので、トラストストアには秘密のものはありません。サーバーの証明書だけであるため、クライアントはサーバーが信頼されていることを認証できます。

これはkeytoolで可能ですか?トラストストアからパスワードを削除できる他のツールはありますか?信頼ストアを認証することが実際にその用途を持っている可能性があることを理解すると、何か具体的な理由がありますかパスワードなしでトラストストアを使用しますか?

+1

これを確認してくださいhttp://stackoverflow.com/questions/23629246/is-it-possible-to-create-jks-keystore-file-without-a-password keytoolを使用してパスワードなしでキーストアを作成することはできませんが、プログラムで行うことができます – pedrofb

答えて

1

新しいトラストストアを作成した場合、keytoolで空白のパスワードを入力できるようになりますが、パスワードを持たない問題は、攻撃者が任意の証明書を挿入して信頼できることです。これにより、man-in-the-middle attackなどの悪意のある機会が生まれます。アプリケーションでは、攻撃者が設定したURLを信頼できるものと想定しているため、たとえば、Webサービスコールの再ルーティングを妨げるものはありません。

本番環境でキーストアとトラストストアのパスワードをデフォルトから変更することをお勧めします。

+0

私の位置は、トラストストアのパスワードが設定やコードで明白に利用可能であるため、トラストストアを簡単に改ざんする可能性があります。これは攻撃者が特権的な位置にあるためです。パスワードは本当に追加のセキュリティを購入しません。たとえば、ほとんどの* NIXシステムには、システムのトラストストアを表すPEMファイルが多数あり、ファイルパーミッション以外のもので保護されていません。私のアプリケーションのトラストストアはどうして違うのですか? –

+1

'keytool'は空白のパスワードを許可していません。少なくともkeytoolの現バージョンではありません。 –

+0

他のツール(および生のJavaコード)*は空のパスワードを使用できます。また、キーストア自体にパスワードがある場合でも、パスワードなしでキーストアの非プライベート項目(証明書など)を読み取ることができます。 'keytool'からキーストアの完全性を確認できないという警告が表示されます。 –

関連する問題