2016-06-24 14 views
3

現在、SSLクライアント接続を介して サーバーと通信するJavaクライアントアプリケーションを開発中です。私たちの設計では、サーバーは に、信頼できる証明書を使用してクライアントに対して認証する必要があります。 証明書チェーンは次のようになります。証明書をキーストアにインポートする、証明書チェーンがnullです

<SOME CA Root certificate> 
+- <SOME CA Intermediate certificate> 
    +- <Our companies certificate> 

を最初に、私たちはこれは単純なことを考えた:任意の空のキーストア、 インポートCAルート、CA-中間、最終的には私たち自身の証明書を生成し、このキーストア を配布しますクライアント間で実行されます。これを行うために、私たちは署名付きの公開鍵を含むpemファイル を使用しました。 CA-Root-Keyをインポートすると、 キーストアに、信頼できるとマークするように指示されました。

ただし、keystore.getCertificateChainにアクセスするたびにnullが返されます。

私たちは(彼らは)期待通りにすべての証明書がキ​​ーストアで利用可能 であることをkeytoolKeyStoreExplorerを経由してチェックしても、 それぞれのサブジェクトのキー識別子と権限キーマッチ(彼らは)そのています。我々は また、輸入が正しい順序で行われたことを確認した:最初のCA、 次に中間、次に当社の証明書。

私たちは私たち自身の会社のウェブサイトに行ってきましたしない(Firefoxは言う場合は、証明書が 良いです)と アウトを支配するために、そこから(PEMなど)全体の証明書チェーンをダウンロードし、オリジナルのPEM-のファイルが破損していることを、まだ何も変更。

どこが間違っていましたか?証明連鎖を明示的に設定する必要はありますか?どのようにを入手できますか?getCertificateChain内のどのステップが失敗していますか?

答えて

2

チェーンのルート証明書を信頼できるCA証明書としてインポートする必要があります。チェーン全体ではありません。 KeyStore.getCertificateChain()は、非公開鍵エントリにのみ適用されます。

+0

ありがとう、これは多くの助けになりました!だから私は解決策を見つけることができませんでした – Nina

関連する問題