PEMParser readObject() 在打开 X509 有效证书时失败

问题描述

我在我的 java 项目中使用 PEMParser 来解析和读取各种 X509 证书的详细信息,但它在特定的证书上失败。我检查了证书 here,它显示正确。我错过了什么?

encodedCertificate = "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";
certificateStr = "-----BEGIN CERTIFICATE-----\n" + encodedCertificate + "\n-----END CERTIFICATE-----";           
PEMParser parser = new PEMParser( new StringReader( certificateStr ) );
Object obj = parser.readObject(); //this is where it fails.

我得到的例外是:

[ERROR] 2021-01-29 10:27:34,328 stderr - org.bouncycastle.util.encoders.DecoderException: unable to decode base64 string: String index out of range: 2551

有什么提示吗?解码此证书的任何替代方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)