PKCS#12 : DerInputStream.getLength() Ausnahme
Generiere ich ein Zertifikat mit dem keytool-Befehl:
keytool -genkeypair -alias myRSAKey -keyalg RSA -keysize 1024 -keystore test.p12 -storepass test -storetype pkcs12
Dann, wenn ich versuche zu laden es mithilfe von java-security-API, nachdem man sich die Datei als byte[] :
KeyStore ks = KeyStore.getInstance("PKCS12");
try{
ks.load(new ByteArrayInputStream(data), "test".toCharArray())
} catch (Exception e){
...
}
Bekomme ich eine DerInputStream.getLength(): lengthTag=127, zu große Ausnahme.
Was ist falsch?
InformationsquelleAutor der Frage karlipoppins | 2011-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich dieses problem und ich habe gesucht den tiefen von google und konnte immer noch nicht die Antwort zu finden. Nach einigen Tagen Kampf mit einem schrecklichen Qualität in legacy-code habe ich gefunden, was war die Ursache dieses Fehlers.
diese Methode nimmt einen InputStream und wenn es irgendein problem mit solchen InputStream, wird diese Ausnahme geworfen wird, einige der Probleme, die ich gestoßen bin:
Die Letzte war die für mein problem zuständig. Der code war die Schaffung eines InputStream von einem Zertifikat, und fortfahren, es zu benutzen in zwei KeyStore.load() aufruft, wird der erste erfolgreich war, den zweiten hat man immer mir diese Fehlermeldung.
InformationsquelleAutor der Antwort ibrabeicker
Wahrscheinlich das Zertifikat, das Sie erstellen, wird ein zusätzliches Zeichen am Ende, das ist falsch, ein anderes Zertifikat.
Verwenden Sie eine oder mehrere leere Zeilen am Ende.
Finden: Java-Zertifikat-Parsing
InformationsquelleAutor der Antwort Amanpreet
Für andere mit einem ähnlichen problem:
Für mich die Lösung war das entfernen der param:
-storetype pkcs12
da die standard-Typ jks
InformationsquelleAutor der Antwort Jan vO
Geben Sie den Typ des Zertifikats, die in den code
für zB:
InformationsquelleAutor der Antwort Harikrishnan P.R
Dann machst du etwas falsch.
Ich habe versucht, Ihr Befehl geladen und dann den p12 gut so.
Der folgende code funktioniert:
Ich Frage mich, wenn Sie den Befehl als ist Sie eine Fehlermeldung erhalten, von keytool, dass das Kennwort muss mindestens 6 Zeichen lang sein.
Haben Sie nicht auch diesen Fehler? Welche java-version verwenden Sie?
Hinweis:wenn Sie Zertifikate erstellen, können Sie auch einen Blick in dieses tool.
http://sourceforge.net/projects/certhelper/
InformationsquelleAutor der Antwort Cratylus
Ich hatte das gleiche Problem.
Meine Lösung ist zu ersetzen PKCS12-mit jceks in der Zeile unten, da war ich anscheinend mit dem falschen Typ.
InformationsquelleAutor der Antwort sindacco
Mir das passiert, da musste ich kopieren und einfügen der
.p12
Datei lokal auf meiner windows-Maschine 10. Keine Ahnung, wie/warum dies ist ein problem, aber wenn ich clone ein Projekt, das.p12
Dateien und Stelle meinen code in Ihnen, die Dateien zu arbeiten. Allerdings, kopieren und einfügen von Dateien in windows Datei-explorer, um irgendwo anders auf der Festplatte diesen Fehler verursacht!!!!InformationsquelleAutor der Antwort Adam Hughes