Base64 でエンコードされた証明書があります ----- BEGIN CERTIFICATE ----- MIIGezCCBWOgAwIBA ....、そこから証明書パスに表示されるルート証明書と中間証明書を取得する方法!
2052 次
1 に答える
0
以前も同じ問題がありました。ご覧のとおり、証明書には発行者フィールドがあり、発行者のサブジェクトが含まれています。
それを比較したり、署名をテストしたりできます。証明書の署名を検証できるのは CA だけです。
このようなもの:
//load all the ca certificates and get their public keys
caCertificate.getIssuerDN().equals(caCertificate[i].getSubjectDN());
// OR/AND
try {
verifySignature(certificate,
caCertificate[i].getPublicKey());
//issuer found
}
catch (Exception e) {
// not the issuer
}
私はコードをテストしませんでしたが、アイデアはわかりました。
編集:
Java には、チェーンを検証するために特別に作成されたクラスがいくつかあります。そのうちの 1 つがCertPathBuilder
クラスです。使い方はまだまだ研究中です。私はいつも間違ったパラメータでそれを作成すると思います...
編集2:
これにインスパイアされたものを使用しています。
幸運を
于 2012-02-17T20:52:00.363 に答える