3

証明書/キー管理ツールを作成しようとしていますが、証明書/キーのmd5フィンガープリントを取得する方法がわかりません。

たとえば、キーストアでkeytoolコマンドを使用すると、

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: myname
Creation date: 21-Aug-2011
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=bla bla, L=bla, ST=bla
Issuer: CN=bla bla, L=bla, ST=bla
Serial number: 123w3qa
Valid from: Sun Aug 21 00:12:31 CEST 2011 until: Mon Jul 28 00:12:31 CEST 2110
Certificate fingerprints:
         MD5:  1A:DE:60:21:DE:B1:BF:C3:D1:AD:11:F1:21:22:D7:9E
         SHA1: 72:3A:D9:2E:1A:DE:60:21:DE:B1:BF:C3:D1:AD:11:F1:21:22:D7:9E
         Signature algorithm name: SHA256withRSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: AA EA FA FE 34 DA 6E C6   FC 8B 6C DE S9 21 S9 S4  ......^...l.I!.D
0010: S3 33 29 SD                                        .S..
]
]

*******************************************
*******************************************

ここで、Javaを介して次の情報を取得したいと思います。1。MD5フィンガープリント2. KeyIdentifier

X500CertificateオブジェクトとX500Principalを使用していくつかの情報(たとえば、日付と日付、所有者、発行者、エイリアス名)を取得しましたが、他の情報を取得できる場所が見つかりませんでした。誰かが私を助けることができますか?

4

3 に答える 3

4

ソースコードを確認するとkeytool、次のことがわかります。

 2830       getCertFingerPrint("MD5", cert),

これは次を呼び出します:

 3167       /**
 3168        * Gets the requested finger print of the certificate.
 3169        */
 3170       private String getCertFingerPrint(String mdAlg, Certificate cert)
 3171           throws Exception
 3172       {
 3173           byte[] encCertInfo = cert.getEncoded();
 3174           MessageDigest md = MessageDigest.getInstance(mdAlg);
 3175           byte[] digest = md.digest(encCertInfo);
 3176           return toHexString(digest);
 3177       }
于 2012-10-29T10:24:01.480 に答える