Ich versuche Java zu verwenden, um ein Zertifikat zu lesen, das ich von einer externen Partei erhalten habe. Der Code wirft den folgenden Fehler:Ein X.509-Zertifikat mit Java lesen
java.lang.RuntimeException: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor
Der Code:
FileInputStream ksfis = new FileInputStream(this.getCertificateFile());
ksbufin = new BufferedInputStream(ksfis);
certificate = (X509Certificate)
CertificateFactory.getInstance("X.509").generateCertificate(ksbufin);
Um das Problem stellen Sie sicher, wurde in den Code nicht, ich ein selbst signiertes erstellte Zertifikat und verwendet es mit dem Code, und es hat gut funktioniert. Ich habe beide Zertifikate in der Systemschlüsselkette installiert, und beide sind gültig. Ich benutze einen Mac und Java 1.6.
Irgendeine Idee, warum ich die oben genannte Ausnahme bekomme, wenn ich das externe Parteizertifikat lade? Glaubst du, dass es während der Übertragung beschädigt wurde? Wenn dies der Fall ist, sollte es auf dem lokalen System nicht als gültig angezeigt werden, oder?
Wenn Sie es in einem Texteditor öffnen, zeigt es Text oder Müll? –
Ich habe meins im Texteditor und dessen kompletten Müll geöffnet und die dritte Partei ist ordentlich Müll in BEGIN-Zertifikat und END-Zertifikat-Text und der Inhalt innerhalb dieser beiden Enden mit == (base64 codiert?) – Java
Ordentlich angeordnet wie in '- ---- START ZERTIFIKAT ----- \ n Basis 64 Junk \ n ----- ENDE ZERTIFIKAT ----- "Ich nehme an? –