トラストストアとキーストアの定義
-
11-07-2019 - |
質問
の違いについて教えてくださいキーストアとトラストストア?
解決
キーストアには秘密鍵と、それに対応する公開鍵を持つ証明書が含まれます。
トラストストアには、通信する予定の他の当事者からの証明書、または他の当事者を識別するために信頼する認証局からの証明書が含まれます。
他のヒント
-
キーストアには秘密鍵が含まれています。必要なのはこれだけです サーバー、またはサーバーがクライアント認証を必要とする場合。
-
トラストストアには、信頼するCA証明書が含まれています。サーバーの場合 証明書は、認識されたCA(デフォルトのトラストストア)によって署名されます JREに同梱されているものは、すでにそれを信頼しています(既に 信頼できるCAを信頼しているため)、独自のCAを構築する必要はありません。 または、JREから何かを追加します。
は、SSLハンドシェークの目的 トラストストアでの検証資格 目的 キーストアの提供する資格.
キーストア
キーストアのJavaの店の秘密鍵と証明書に対応する公開鍵が必要な場合は、SSLサーバがSSLクライアント認証が必要で.
トラストストア
トラストストア店舗からの証明書を第三者には、Javaアプリケーション通信-証明書が署名したCAの証明書のように当局にはVerisign、Thawte,GeotrustはGoDaddy)を特定することができる。
TrustManager
TrustManagerかどうかを判定しリモート接続の信頼性やせるるかどうかリモートpartyであり、KeyManagerを決定する認証資格に送る必要があります。リモートホスト認証の中でSSLハンドシェーク.
をする場合のSSLサーバで使う鍵の中に鍵交換アルゴリズムに送証明書に対応する公開鍵は、この証明書が取得したkeyStore.SSLクライアント側の場合、Javaで記述された、使用証明書に格納キーストアを確認であると考えられる。SSL証明書は最も一般的となります .cer ファイルが追加されたキーストアまたはトラストストアを利用鍵管理ユーティリティ例 keytool.
標準のJSSEドキュメントの一部として、Sunからの記事にも興味があるかもしれません。
http:// docs。 oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores
通常、トラストストアは、X.509認証などの検証目的で、公開鍵のみを格納するために使用されます。管理性の目的で、管理者または開発者が2つを1つのストアに単純に統合することは非常に一般的です。
Javaでは、キーストアとトラストストアの違いは何ですか?
Java Secure Socket Extension(JSSE)のJavaドキュメントの説明です。リファレンスガイド。他の人が言ったことと違うことを言っているとは思わない。ただし、公式のリファレンスは提供しています。
キーストア/トラストストア
キーストアは、キーマテリアルのデータベースです。キーマテリアルは、認証やデータの整合性など、さまざまな目的に使用されます。 PKCS12や OracleのJKS。
一般的に、キーストア情報は、キーエントリと信頼できる証明書エントリの2つのカテゴリに分類できます。キーエントリー エンティティのIDとその秘密鍵で構成され、使用できます さまざまな暗号化目的のため。対照的に、信頼できる 証明書エントリには、公開キーに加えて エンティティのアイデンティティ。したがって、信頼できる証明書エントリは使用できません 秘密鍵が必要な場合、例えば javax.net.ssl.KeyManager。 JKSのJDK実装では、キーストア キーエントリと信頼できる証明書エントリの両方を含めることができます。
トラストストアは、何を信頼するかを決定するときに使用されるキーストアです。エンティティからデータを受け取った場合 すでに信頼しており、そのエンティティが それが主張している場合、あなたはデータが本当にから来たと仮定することができます そのエンティティ。
エントリがトラストストアに追加されるのは、ユーザーがそのエンティティを信頼する場合のみです。キーペアを生成するか、 証明書の場合、ユーザーはそのエントリに信頼を与えます。のエントリ トラストストアは信頼できるエントリと見なされます。
2つの異なるキーストアファイルがあると便利な場合があります。1つはキーエントリのみを含み、もう1つは CA証明書を含む信頼できる証明書エントリ。前者 には個人情報が含まれますが、後者には含まれません。 2つを使用して 単一のキーストアファイルの代わりにファイルを使用すると、より明確に分離できます 独自の証明書(および 対応する秘密鍵)および他の証明書。もっと提供する 秘密鍵の保護、それらをキーストアに保存する アクセスを制限し、信頼できる証明書を提供します 必要に応じて、公開されているキーストア。
-
trustStoreとkeyStoreの最初の大きな違いは、trustStoreがリモート接続を信頼するかどうかを決定するためにTrustManagerによって使用されることです。keyStoreはKeyManagerから使用され、ハンドシェイク。
-
もう1つの違いは、keyStoreには理論上、SSL接続でサーバーを実行している場合、またはサーバー側でクライアント認証を有効にしている一方で、trustStoreがCA(証明書権限)は、リモートパーティまたはSSL接続を信頼するために使用されます。
実際には、秘密鍵と公開鍵の両方を同じファイルに保存できますが、 これらのファイルを管理するツールが同じ(keytool)であれば、 そのため、単一のファイルを両方の目的に使用することができます おそらくすべきではない。
-
少なくとも私のMac OSXでは、デフォルトのkeyStoreは
$ {user.home} /。keystore
であり、デフォルトのtrustStoreは/ System / Library / Java / Support /です。 CoreDeploy.bundle / Contents / Home / lib / security / cacerts
。それらをオーバーライドする場合は、JVMパラメーターを追加する必要があります
-Djavax.net.ssl.keyStore / path / to / keyStore
または-Djavax.net.ssl.trustStore / path / to / trustStore
。あなたも の場合にkeyStoreパスワードを設定する必要がありますjava.security.UnrecoverableKeyException:パスワードは null
、パラメーターを使用-Djavax.net.ssl.trustStorePassword = password
または-Djavax.net.ssl.trustStorePassword = password
メインソース:
http:// javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html