web-dev-qa-db-ja.com

キーストアのエントリタイプ「keyEntry」と「trustedCertEntry」の違い

私はこの分野の知識はあまりありませんが、まだグーグルでやろうとしています。これが私が直面している問題です。

ケース1(機能):

CA署名付き証明書を持っていますが、それを自分のWebアプリケーションで使用したいと思います。最初にキーストアを作成しました。キーストアにエントリタイプ「keyEntry」を作成することがわかります。次に、作成したキーストアにCA署名付き証明書をインポートします。

手順は次のとおりです。

keytool -genkeypair  -keystore keystore.jks

エイリアス「mykey」のタイプ「keyEntry」のキーストアにエントリが表示されます

次に、証明書をインポートします。

keytool -importcert -alias abc -file cert.crt -keystore keystore.jks

今度はtrypeの別のエントリ「trustedcertEntry」が表示されます。

このキーストアを使用すると、アップロードしたWebアプリケーションにアクセスできます。

ケース2(機能しない):

証明書をインポートしながら、その場でキーストアを作成します。

keytool -importcert  -alias abc -file cert.crt -keystore keystore2.jks

ここでは、「trustedcertEntry」というエントリタイプが1つだけ表示されます

このキーストアでは、Webアプリケーションにアクセスできません。

質問:

キーエントリタイプ "keyEntry"および "trustedcertEntry"とは何ですか。また、エントリタイプが "keyEntry"の場合にのみキーストアが機能するのはなぜですか。

12
bluefoggy

Keytoolについての私の理解はせいぜい希薄ですが、秘訣は、ケース2では-genkeypairを省略して、必要な秘密鍵を生成していないということです。

ケース1では、使用する手順は次のとおりです。秘密鍵のペア(公開鍵と秘密鍵)を作成し、証明書をキーストアの信頼できる証明書にインポートします。おそらく、信頼できる証明書が証明書として機能しているか、アプリケーションが同じファイル内の結合されたキーペア/証明書を使用していない可能性がありますが、秘密鍵と結合する別の証明書がキ​​ーストアにあります。

'trustedCertEntry'は、キーストアによって信頼される証明書であると言えます。これは、証明書チェーンを許可するために不可欠です(例:Root-CAがEnd-Cert1に署名するIntermediate-CA1に署名します。root-CAとIntermediate-CA1の両方をtrustedCertEntryとして使用しないと、キーストアはエンド証明書を信頼しません)。 TrustedCertEntryには、秘密鍵が関連付けられていません。証明書に含まれている公開鍵のみが含まれています。

keyEntry(私は思います!)は、証明書のない公開/秘密鍵のペアです。

privateKeyEntryは、関連付けられたCA署名付き証明書または自己署名付き証明書を持つ公開/秘密鍵のペアです。

8
duct_tape_coder