証明書を一意に識別する方法

証明書を一意に識別する方法

署名された XML ドキュメントを大量に受信するサービスがあり、その一部は自己署名証明書で署名され、一部は信頼できる証明機関によって署名されています。

XML ドキュメントの署名に使用される証明書が信頼する証明書のリストに含まれていることを確認する最善の方法は何ですか?

今日は、証明書のサムプリントを、受け入れられた証明書のサムプリントのリストと照合します。

指紋が一意であると信頼できますか、それとも偽造することは可能ですか?

これを解決する最善の方法は何でしょうか? (署名された XML ドキュメントを送信するすべての人に、信頼できる証明機関からの証明書を使用させることはできません)

答え1

を使用している場合は標準 XML 署名構文の場合、オプションの KeyInfo には実際に使用する証明書が含まれる場合があります。

KeyInfoの証明書の拇印を使用して、承認された証明書のリストと照合し、実際の署名を検証する必要があります。信頼できる証明書の独自のストアからのその証明書のコピー文書の署名に使用された実際の証明書が異なる場合、検証手順は失敗し、文書は拒否され、誰かがさらに調査する必要があります。

証明書の拇印は、偶然に同じ拇印を持つ 2 つの証明書が存在する可能性が無視できるほど複雑である必要があります。ただし、たとえそのようなことが起こったとしても (おそらく悪意による)、署名検証プロセスで間違った証明書が選択されるだけであり、検証は確実に失敗するはずです。

しかし、文書を検証する場合文書自体に付属する証明書そして、証明書の拇印が信頼できる証明書の1つと一致することを確認すると、間違ったやり方: 基本的には、信頼された証明書の拇印をパスワードとして使用します。

関連情報