2016-05-31 15 views
0

Ich habe eine cert.PEM-Datei, die ich auf diese Weise erstellt:
Wie ein PEM-Zertifikat zu lesen, ohne BEGIN und END über PEMParser in Java BouncyCastle mit

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(); 

Es ist ohne ----BEGIN CERTIFICATE---- und -----END CERTIFICATE----- Teile. Es ist in seiner rohen Form wie:

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

Jetzt möchte ich es noch einmal lesen und es zu einem X509CertificateHolder durch diesen Code zu analysieren:

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(); 
      } 

und ich bekomme diese:

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) 

, die auf r.readPemObject() zurückzuführen ist, gibt null zurück. Was soll ich machen?

Antwort

0

Das PEM-Format enthält die Header BEGIN CERTIFICATE und END CERTIFICATE. Siehe http://tools.ietf.org/html/rfc7468#page-11. Sie sollten sie also in Ihre .pem-Datei einfügen. Danach funktioniert PEMParser ordnungsgemäß

Wenn Sie dies nicht tun können, fügen Sie die Header im laufenden Betrieb, bevor Sie den Inhalt zu PEMParser