如何使用Java中的充气城堡以ASN1格式导出X509证书?

Isi*_*vic 1 java bouncycastle asn.1 x509certificate

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

这是我的PEM:

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

这是我的DER:

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

小智 7

首先,请记住,ASN.1是不是一个格式本身,它是一个描述语言定义一个结构,PEM只是一个格式化这些定义的结构方式。(许多加密标准使用ASN.1定义自己的数据结构,以及PEMDER(标识编码规则),以序列化的结构。)

因此,PEMDER只是两种写入ASN.1定义的信息的方式。您可以将某些内容导出到PEMDER,但是没有诸如“导出到ASN.1格式”之类的东西(因为ASN.1不是一种格式)。

.cer扩展名只是数字证书的文件扩展名,但是此证书可以是PEMDER(无所谓,并且扩展名不会更改)。

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