【问题标题】:How to obtain the serial number of the certificate, which was used to encrypt a message?如何获取用于加密消息的证书的序列号?
【发布时间】:2017-09-13 21:14:45
【问题描述】:

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

但是如何输出用于加密消息的证书的序列号?例如,客户看到他选择了旧证书会很有帮助。

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

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

【问题讨论】:

  • 请添加引发错误的代码
  • 我认为错误在这里并不重要。我的问题是如何获取用于加密消息的证书序列号。

标签: java certificate bouncycastle serial-number


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 2014-04-10
    • 2018-04-11
    • 2018-05-02
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多