如何获取用于加密消息的证书的序列号?

时间:2017-04-18 06:39:08

标签: java certificate bouncycastle serial-number

我使用Java和BouncyCastle来解密和验证p7m s / mime消息。当我选择解密消息的私钥不匹配时,我从Bouncy Castle收到错误,如“异常解包密钥”或“填充错误”。

但是如何输出用于加密邮件的证书的序列号?例如,客户可以看到他选择了旧证书。

Windows提供了一个控制台应用程序“certutil”,以便分析p7m流。那里提到了序列号和发行人:

CMSG_KEY_TRANS_RECIPIENT(1) CERT_ID_ISSUER_SERIAL_NUMBER(1) Seriennummer: b33...

1 个答案:

答案 0 :(得分:0)

最后,我发现了自己: - )

bouncycastle中有一个类,它可以解析加密消息的ASN结构。

ASN1InputStream bIn = new ASN1InputStream(message.getEncoded());
ASN1Primitive obj = bIn.readObject();
system.out.println(ASN1Dump.dumpAsString(obj));

证书的序列号也在里面。所以我跳转到源代码并复制了我需要的部分,以便检测它并将其存储在全局变量中。