1

java でサブジェクトの詳細を証明書 (DER 形式、つまり .cer ファイル) に表示するにはどうすればよいですか? 例: 電子メール、国、名前または別の OID など。

証明書の読み取りは、上記のコードから実行できます。Androidでも動作します。GreyBeardedGeek さん、ありがとうございます。しかし、さらに詳しく説明すると (ご要望に応じて)、メソッド getSubjectDN() または cert.getSubjectX500Principal().getname() を使用してサブジェクトの詳細を表示すると、詳細全体が表示されます。暗号化されている場合もあります。私はそれをASN1と信じています(よくわかりません)。必要なのは、必要な情報だけを抽出することです。例として、私が作成したサンプル証明書のコードの出力を参照してください。using method - cert.getSubjectX500Principal().getname() Subject Name 2.5.4.5=#130d4e2d61626c652f49542f303130,2.5.4.72=#1308456e67696e656572,2.5.4.41=#13104e7577616e20446520416c6d65696461,1.2.840.113549.1.9.1=#16106e7577616e406e2d61626c652e62697a,OU=Information Technology ,O=N-able Pvt Ltd\ ,ST=ウエスタン,C=LK

2.5.4.5 はエンコードされた OID (Object Identifier) です。

メソッドの使用 - getSubjectDN()

OID.2.5.4.5=N-able/IT/010、OID.2.5.4.72=エンジニア、OID.2.5.4.41=ヌワン デ アルメイダ、OID.1.2.840.113549.1.9.1=#16106E7577616E406E2D61626C652E62697A、OU=情報技術O="N-able Pvt Ltd "、ST=ウェスタン、C=LK

ここでも一部の情報がエンコードされます。たとえば、電子メール アドレスです。

私の質問に戻ると、OID に基づいて (エンコードされていない) 情報を個別に抽出するにはどうすればよいでしょうか。さらに、証明書を Windows OS にインストールすると、サブジェクト情報を正しく表示できます。Java で OID を渡す OID 値情報を取得し、サブジェクトの詳細を個別に抽出するコードが必要です。

よろしくお願いします。

4

2 に答える 2

1

Bouncy Castle ASN.1 解析ライブラリ、特にX500Name. 識別名 (DN) をその部分 (CN、O など) に解析できます。

http://www.bouncycastle.org/docs/docs1.5on/index.html

于 2012-12-14T05:40:09.677 に答える
0

次のコード (エラー処理は含まれていません) は、.cer ファイルから X509Certificate のインスタンスを生成します。次に、そのオブジェクトのメソッドを使用して、証明書のプロパティを検査できます。コードは一般的な Java ですが、Android でも動作するはずです。

X509Certificate cert = null;

FileInputStream fis = null;
ByteArrayInputStream bais = null;

String source = "certificate.cer";
String certType = "X.509"

fis = new FileInputStream(source);
byte[] value = new byte[fis.available()];
fis.read(value);

bais = new ByteArrayInputStream(value);

java.security.cert.CertificateFactory cf = java.security.cert.CertificateFactory.getInstance(certType);
cert = (X509Certificate)cf.generateCertificate(bais);
于 2012-12-07T06:26:57.337 に答える