[解決済み】トラストストアとキーストアの比較 - keytoolで作成する場合
質問
鍵ストアは通常秘密鍵/公開鍵を保持し、トラストストアは公開鍵のみ(そして通信する予定の信頼できる相手のリストを表す)であると理解しています。これが私の最初の仮定なので、それが正しくない場合は、おそらく私はあまりうまく起動していないでしょう...。
しかし、keytoolを使用する際に、どのように/いつストアを区別しているのかを理解することに興味がありました。
でキーストアを作成しました。
keytool -import -alias bob -file bob.crt -keystore keystore.ks
で、私の keystore.ks ファイルが作成されます。私は
yes
という質問に対して、bob を信頼するかどうかという質問をしていますが、これによって作成されたのが keystore ファイルなのか truststore ファイルなのか、私にはよくわかりません。このファイルをどちらか一方として使用するようにアプリケーションを設定することはできます。
-Djavax.net.ssl.keyStore=keystore.ks -Djavax.net.ssl.keyStorePassword=x
-Djavax.net.ssl.trustStore=keystore.ks -Djavax.net.ssl.trustStorePassword=x
であり
System.setProperty( "javax.net.debug", "ssl")
を設定すると、信頼された証明書の下に証明書が表示されます (ただし、キーストアのセクションには表示されません)。私がインポートしている特定の証明書は公開鍵しか持っておらず、私はそれを使ってBobにSSL接続で物を送るつもりです(しかし、おそらくそれは別の質問に残しておくのが最善でしょう!)。
何かご指摘やご説明がありましたら、よろしくお願いします。keytoolの出力は、何をインポートしても同じで、一方はキーストア、他方はトラストストアという慣習なのでしょうか?SSLなどを使用する場合の関係はどうなっているのでしょうか?
解決方法は?
用語は確かに少しわかりにくいですが、どちらも
javax.net.ssl.keyStore
と
javax.net.ssl.trustStore
は、使用する鍵ストアを指定するためのもので、2つの異なる目的で使用されます。鍵束にはさまざまな形式があり、必ずしもファイルである必要はありません (
本題
)、そして
keytool
は、それに対して様々な操作(import/export/list/...)を行うためのツールに過ぎません。
は
javax.net.ssl.keyStore
と
javax.net.ssl.trustStore
パラメータは
KeyManager
と
TrustManager
をそれぞれ作成し、それを使って
SSLContext
を経由して SSL/TLS 接続をするときに使う SSL/TLS 設定を含んでいます。
SSLSocketFactory
または
SSLEngine
. これらのシステムプロパティは、単にデフォルト値が由来しており、それを
SSLContext.getDefault()
によって使用されます。
SSLSocketFactory.getDefault()
などがあります。(デフォルト値を使いたくなければ、APIでカスタマイズすることができますし、特定の
SSLContext
を使用することができます)。
との違いは
KeyManager
と
TrustManager
(の間(つまり
javax.net.ssl.keyStore
と
javax.net.ssl.trustStore
から引用)は、次のとおりです。
JSSEレフガイド
):
TrustManagerです。 を使用するかどうかを決定します。 リモート認証の認証情報(および 接続を行う必要があります。 を信頼する。
KeyManager(キーマネージャー)。 どの に送信する認証クレデンシャル。 リモートホストの
(他のパラメータも利用可能で、そのデフォルト値については JSSE参照ガイド . トラストストアにデフォルト値がある一方で、キーストアにはないことに注意してください)。
本来、鍵ストアは
javax.net.ssl.keyStore
は秘密鍵や証明書を格納するためのもので、一方
javax.net.ssl.trustStore
は、リモートパーティが証明書を提示したときに、あなたが信頼してもいいと思うCA証明書を格納することを意味します。場合によっては、これらは同じストアにすることもできますが、(特にファイルベースの場合は)別々のストアを使用する方がよい場合が多いです。
関連
-
[解決済み] 証明書をインポートした後のJava Keytoolのエラー、"keytool error: java.io.FileNotFoundException & Access Denied" 。
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] アクティビティに割り当てられない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] Eclipse- Dynamic Web Module 3.0 で新しいプロジェクトを作成するときに Java 1.6 以降が必要なエラーが発生する。
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] アニメーションGIFの表示
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] タイプの安全性。アンチェック・キャスト