2011-07-18 24 views
3

私は、別の場所から受け取った証明書と私有鍵を持っています。これら2つの抽象的なオブジェクトだけが与えられている場合、証明書が関連付けられていることを確認できますか、または指定されたPrivateKeyの証明書ですか?Java証明書が鍵に関連付けられている

これらがRSAキー用である場合は、RsaPublicKey/RsaPrivateKeyにキャストして指数とモジュラスが一致することを確認できますが、ECDSAの場合はどうなりますか?他のタイプはどうですか?

最終的に証明書チェーンとして証明書を持つキーストアにキーを保存したいと思っています。これは例外をスローするか、別のキーから証明書でキーをロードしようとすると何らかのエラーが発生すると思いました。しかし、それは重要ではないようですか?

答えて

2

まず、秘密鍵でランダムなデータブロックに署名し、公開鍵で検証することができます。公開鍵は証明書の一部です。これはすべての署名アルゴリズムに適用されます。

また、秘密鍵構造には一致する公開鍵が含まれていることがよくあります。それを確認してください - 一致するキーを検索する方が簡単です。

+0

私はこれがうまくいくと思います。私は、私が手で持っているキーのタイプを必ずしも知っているわけではありませんが、私はECDSAに続くRSA署名検証を試みることができます。いずれかが動作する場合は、それらを有効なペアとみなします。 – kenen

-1

お客様には、秘密鍵であるを含めるべきではありません。それは私用です。必要なのは公開キーだけです。次に、Certificate.verify(PublicKeyキー)で証明書を確認します。

誰かに秘密鍵を渡した人は、致命的な被害者であるのセキュリティがあります。彼らは、新しい秘密鍵、署名付き証明書などを作成して展開し、以前の鍵のすべての使用を中止する必要があります。また、新しい秘密鍵を非公開にする必要があります。

+2

あなたは、OPが誰かとは違って彼の秘密鍵ではないと言ったことから、どうやって確かめられますか? –

+0

@GregSなぜなら、彼は(a)彼がそれらを受け取り、(b)彼は彼らを別の場所から受け取ったと言っていたからです。 – EJP

+1

私は、場合によっては、証明書を含む単一のファイルと秘密鍵を含む単一のファイルを持つことを意味します。私は主に、プライベートキーを既にロードして、別のキーの証明書をロードしようとすると、ユーザーにエラーを与えることに懸念しています。またはその逆。 – kenen

関連する問題