2017-11-08 11 views
1

私は最近、KeyStoreとTrustStoreの両方として単一のファイルを使用するTomcatで動作するアプリケーションを持つプロジェクトに参加しました。つまり、trustedCertEntryとPrivateKeyEntryの両方のエントリが含まれています。TrustedCertEntryとPrivateKeyEntryをJKSに格納するとどうなるのですか?

8.5.20へのTomcat 8.5.6からアップグレードしている間、私はcatalina.outは、ソリューションがキーストアからtrustedCertEntryエントリを削除できるようにすることだった

java.lang.IllegalArgumentException: java.security.KeyStoreException: Cannot store non-PrivateKeys 

を与えていたが実現。

私にとって、これはあなたがこれらの別々のものを保つことを望んでいるとかなり明らかです。私の質問は、は、キーストアとトラストストアと同じファイルを使用することによるセキュリティ上の影響はありますか?もしそうならば、Java(またはSSL)はこれらを同じファイルに保存することをなぜ許可しますか?

+0

もう1つの解決策は、キーストアファイルの秘密キーに固有のtomcatコネクタ構成にキーエイリアス名を提供することです。多くの場合、特に生産に使用されている証明書は管理できません。 – mks

答えて

1

SSLとTLSは相互運用可能なプロトコルです。 IETFの方針と伝統によって、いずれかのエンドポイントで何かとすべてのストレージに関する何も言わない。 「それは地域の問題だ」

Javaは、SSL/TLSだけでなく、すべての公開鍵暗号(オプションでJCEKSもいくつかの対称暗号も含む)のTrustedCertとPrivateKeyの両方で歴史的に使用されている1つのファイル形式(JKS)であり、Java9はPKCS12どちらも。同じフォーマットを使用しても、同じファイルを使用する必要はありません。別々のファイルを使用することをお勧めしますが、実際には1つのファイルを使用する場合にはセキュリティ上の問題は発生しません。 1つのシステムに限定された秘密鍵、または絶対に必要な数のシステム、適切なバックアップ。しかし、それは実際にプログラミングQではないし、セキュリティのより良い答えを試してみるかもしれない.SX。

Tomcat 8.5のsorta-kindaは、Java-JSSEとAPR = OpenSSLのスタックのために別々の設定と(しばしば紛らわしい)別の設定を組み合わせていますが、私はこの制限のためにキーストアにPrivateKeyを含めることができます。

関連する問題