3

私は暗号化が初めてなので、これが基本的な質問だと思われる場合はご容赦ください。

個々の公開証明書、つまり .cer ファイルを読み取って抽出し、キー ストアに保存する必要がある .p7b ファイルがあります。.cer ファイルをbyte[]として取り込んで保存するサービスが既に存在するため、キー ストアに永続化することを心配する必要はありません。

私が知りたいのは、.p7b を読み込んで個々の .cer ファイルを抽出する方法です。openSSL コマンドを使用して実行できることはわかっていますが、Java でも同じことを行う必要があります。証明書を永続化するための一意のキーとして使用されるため、 Issued By名も読み取る必要があります。

前もって感謝します

4

2 に答える 2

3

BouncyCastle を使用して PKCS#7 オブジェクトから証明書を取得できます。簡単なコード サンプルを次に示します。

 public Collection<X59Certificate> getCertificates(String path) throws Exception
 {
     Security.addProvider(new BouncyCastleProvider());
     CMSSignedData sd = new CMSSignedData(new FileInputStream(path));
     X509Store store = sd.getCertificates("Collection", "BC");
     Collection<X509Certificate> certificates = store.getMatches(X509CertStoreSelector.getInstance(new X509CertSelector()));
     return certificates;
 }

PKCS#7 には複数の証明書が含まれる場合があることに注意してください。ほとんどの場合、エンドユーザー証明書とルート CA の間の証明書チェーンを構築するために必要な中間証明機関の証明書が含まれています。

于 2013-10-30T13:58:08.363 に答える