如何在 java 中使用充气城堡以 ASN1 格式导出 X509Certificate?

How can I export X509Certificate in ASN1 format using bouncy castle in java?

如何以 ASN.1 格式导出 X509Certificate? 我找到了如何使用 .cer 扩展名导出到 DERPEM,但我找不到如何导出到 ASN.1格式。谁能帮帮我?

这是我的 PEM:

JcaPEMWriter pemWrt = new JcaPEMWriter(new FileWriter(path + ".cer"))
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(loadCertificate);
pemWrt.writeObject(certificate);
pemWrt.flush();
pemWrt.close();

这是我的 DER:

X509Certificate certificate = (X509Certificate) keyStore.getCertificate(loadCertificate);
FileOutputStream fileWrite = new FileOutputStream(new File(path + ".cer"));
fileWrite.write(certificate.getEncoded());
fileWrite.flush();
fileWrite.close();

首先,请记住 ASN.1 本身并不是一种格式 ,它是一种 description language that defines a structure, and PEM is just one way to format these defined structure. (Many cryptography standards use ASN.1 to define their data structures, and PEM or DER (Distinguished Encoding Rules) 序列化这些结构。)

因此,PEMDER 只是两种不同的写入信息的方式,这些信息由 ASN.1 定义。您可以将某些内容导出到 PEMDER,但没有 "export to ASN.1 format" 这样的东西(因为 ASN.1 不是一种格式)。

.cer扩展名只是数字证书的文件扩展名,但是这个证书可以是PEM或者DER(没关系,扩展名不会改变)。

因此,当您使用 JcaPEMWriter 时,您 已经 创建了 PEM 格式的文件。当您使用 certificate.getEncoded() 时,您 已经 DER 格式写入字节。

这是一个很老的问题,但我发现下面的 OpenSSL 命令将 Cert DER/PEM 格式的数据隐藏到 ASN1 中。

openssl asn1parse -in Cerificate.pem -inform PEM

希望这对以后的人有所帮助。