简体   繁体   English

如何使用BouncyCastle通过Java中的PEMParser读取没有BEGIN和END的PEM证书

[英]How to read a PEM certificate without BEGIN and END via PEMParser in Java using BouncyCastle

I have a cert.PEM file which I created in this way: 我有一个以这种方式创建的cert.PEM文件:

Base64 encoder = new Base64();
File file = new File(certPath + "cert.pem");
file.createNewFile();
writer = new FileWriter(file);
writer.write(new String(encoder.encode(cert.getEncoded())));
writer.close();

It is without ----BEGIN CERTIFICATE---- and -----END CERTIFICATE----- parts. 它没有----BEGIN CERTIFICATE---------END CERTIFICATE-----部分。 It is in its raw form like: 它的原始格式如下:

MIIDRjCCAi6gAwIBAgIE4B5BgzANBgkqhkiG9w0BAQsFADBlMRkwFwYDVQQDDBBBbGlyZXphIE1vaGFtYWRpMRMwEQYDVQQKDApTdU5vdmEgTExQMQ0wCwYDVQQGEwRJcmFuMRMwEQYDVQQFEwotNTM0ODg4MDYxMQ8wDQYDVQQFEwZTdU5vdmEwHhcNMTYwNTMxMTE0MDQyWhcNMTYwNjE3MTIyMTExWjBlMRkwFwYDVQQDDBBBbGlyZXphIE1vaGFtYWRpMRMwEQYDVQQKDApTdU5vdmEgTExQMQ0wCwYDVQQGEwRJcmFuMRMwEQYDVQQFEwotNTM0ODg4MDYxMQ8wDQYDVQQFEwZTdU5vdmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCOEiLfrO9B2Cr1kEJ3rkI4FSaZMhG8FVPz+JuMxA/OhUNiy3c1/WTNu2tYudld8vowq6kKHxwERcCxLVR3b5ua3dlprTGo4CJSMlF7g6rjSOLmfA52385QfXBbRg+2N02EBTABufH0I+039bWVDDuk2c7tLcpfiK4YHt2f+C1/SzerYwxHIqPT1NxT/NC4SudeaUVljxQa9DRy+WRk/T8ifaphxoqlCcMMPa42+OBLeER3fcTep872hL5IsgWtxU6q5tRbENIXlWyeLQuva02APXyrOI9IssetKIy1Oagp0ji6rWdmHfmGZqBsspWBNio02kZZwSa6DvMHWQdgXn23AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAHAZYqAS0lcZvDMubimsdzF9RkC0gaombd9sM71lhw/Ad6Czv27KTyeY8Y1uBgYqJ5DTREJEBuHbgBdryjhDEdSo+d1wNqws3krLC3qv0jWD4sVhTv1AyNAmkFTJmea0aROaTZrkw+o5cerPKCEBabP7eFQSHu1b8d8xE/xr9os73sI8nBGoOzT87OE/4JQhg733xJh1xENmnrYTsadpOx+8l35RIIzFhag4BdNIlMc/S+bowR5m8iePTaYvb9TZAi4yetj4nWuLnm7nAyqL8idSh2R8esjEk3Y27r7PfJC3p51shlcgJ5Sh/uCNc1P5Bea8mRrX0KE+K1QxEwTjIAw=

Now I want to read it again and parse it to a X509CertificateHolder by this code: 现在,我想再次阅读它,并通过以下代码将其解析为X509CertificateHolder

PEMParser r = new PEMParser(new FileReader(certFile));
            System.out.println(r.ready());
            PemObject object = r.readPemObject();
            X509CertificateHolder cert = new X509CertificateHolder(object.getContent());
            Date date = new Date();
            if (date.compareTo(cert.getNotAfter()) > 0)
            {
                generateCert();
            }

and I get this: 我得到这个:

java.lang.NullPointerException
    at com.sunova.bot.Launcher.<init>(Launcher.java:67)
    at com.sunova.bot.Launcher.getInstance(Launcher.java:41)
    at com.sunova.bot.Launcher.main(Launcher.java:48)

which is due to r.readPemObject() returns null. 由于r.readPemObject()返回null。 What should I do? 我该怎么办?

The PEM format includes the BEGIN CERTIFICATE and END CERTIFICATE headers. PEM格式包括BEGIN CERTIFICATE和END CERTIFICATE标头。 See http://tools.ietf.org/html/rfc7468#page-11 . 参见http://tools.ietf.org/html/rfc7468#page-11 So you should add them in your .pem file. 因此,您应该将它们添加到您的.pem文件中。 After this, PEMParser will work properly 之后,PEMParser将正常工作

If you can not do this, add the headers on the fly before providing the content to PEMParser 如果您不能执行此操作,请在将内容提供给PEMParser之前动态添加标头

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 Java 中的 BouncyCastle 从 PKCS7 PEM 格式的证书创建 X509Certificate - Create X509Certificate from PKCS7 PEM formatted certificate using BouncyCastle in Java 使用Java或BouncyCastle解码/读取CSR(证书签名请求) - Decode/Read a CSR (Certificate Signing Request) Using Java or BouncyCastle NoClassDefFoundError: org/bouncycastle/openssl/PEMParser 在 Jenkins 上使用 SSHJ 时 - NoClassDefFoundError: org/bouncycastle/openssl/PEMParser when using SSHJ on Jenkins 如何在Java中使用Bouncycastle向证书添加PrivateKeyUsage扩展? - How to add PrivateKeyUsage extension to a certificate using bouncycastle in java? 使用 bouncycastle 在 java 中导入 PEM 加密密钥对 - Importing PEM encrypted key pair in java using bouncycastle 可以使用Java生成证书,而无需使用sun内部代码,keytool或bouncycastle - Can a Certificate be generated in Java, without using sun internal code, keytool, or bouncycastle 使用https和pem证书的Java客户端 - Java client using https and a pem certificate 如何在 java 中使用 .pem 文件证书发布数据 - How to post data with .pem file certificate in java 如何验证 Java 中的 PEM 格式证书 - How to verify PEM format certificate in Java 在没有 BouncyCastle 的情况下用 Java 创建 X509 证书? - Creating an X509 Certificate in Java without BouncyCastle?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM