PKCS#12 : DerInputStream.getLength() exception
- Je générer un certificat à l'aide de la commande keytool:
keytool -genkeypair -alias myRSAKey -keyalg RSA -keysize 1024 -keystore test.p12 -storepass test -storetype pkcs12
Alors si j'essaie de le charger à l'aide de la sécurité de java API, après avoir trouvé le fichier comme un byte[] :
KeyStore ks = KeyStore.getInstance("PKCS12");
try{
ks.load(new ByteArrayInputStream(data), "test".toCharArray())
} catch (Exception e){
...
}
- Je obtenir un DerInputStream.getLength(): lengthTag=127, trop grand exception.
Quel est le problème?
OriginalL'auteur karlipoppins | 2011-09-13
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème et j'ai cherché les profondeurs de google et ne pouvait pas trouver la réponse. Après quelques jours aux prises avec une terrible de la qualité du code legacy, j'ai trouvé ce qui était la cause de cette erreur.
cette méthode prend un InputStream et si il y a un problème avec ces InputStream, cette exception est levée, certains problèmes que j'ai rencontré:
Le dernier a été le responsable de mon problème. Le code a été la création d'un InputStream à partir d'un certificat, et de procéder à l'utilisation de deux magasin de clés.load() appelle, la première a été un succès, le deuxième toujours m'a fait cette erreur.
data
(la clé) était un vide tableau d'octets et que la cause de cette erreur. Et tout cela parce que j'ai réutilisé le flux d'entrée.La première cause vous le soulignez, c'est de l'OMI, le plus souvent cause: normalement un mauvais fichier. ie parfois, il m'arrive lorsque j'essaie d'utiliser un
JKS
fichier de magasin de clés avec unKeyStore.getInstance("PKCS12")
ou de renversement de:)
.OriginalL'auteur ibrabeicker
Probablement le certificat que vous avez créé est un caractère supplémentaire à la fin qui est interprété à tort d'être un autre certificat.
Utilisez l'une ou plusieurs lignes vides à la fin.
Consulter: Java Certificat D'Analyse
Ressemble lien est mort.
J'ai corrigé le lien. Vous pouvez vous référer à maintenant.
Cela a été corrigé dans Java 7+.
OriginalL'auteur Amanpreet
Pour les autres avec un problème similaire:
Pour moi la solution a été de supprimer le param:
-storetype pkcs12
depuis le type standard est jks
OriginalL'auteur Jan vO
Spécifier le type de certificat dans le code
pour exemple:
OriginalL'auteur Harikrishnan P.R
Vous faites quelque chose de mal.
J'ai essayé votre commande, puis chargé de la p12 bien.
Le code suivant fonctionne:
Je me demandais si vous mettez la commande comme vous obtenez une erreur de keytool que le mot de passe doit être d'au moins 6 caractères.
Vous n'avez pas eu cette erreur? Quelle est la version de java que vous utilisez?
Remarque:si vous avez besoin de créer des certificats, vous pouvez aussi rechercher dans l'outil.
http://sourceforge.net/projects/certhelper/
OriginalL'auteur Cratylus
J'ai eu le même problème.
Ma solution est de remplacer PKCS12 avec jceks dans la ligne ci-dessous parce que je n'étais apparemment utiliser le mauvais type.
OriginalL'auteur sindacco
Ce qui m'est arrivé parce que j'avais copier-collé de la
.p12
fichier en local sur mon windows 10 de la machine. Aucune idée de comment/pourquoi c'est un problème, mais quand je clone un projet qui a.p12
fichiers et point de mon code, les fichiers de travail. Toutefois, copier et coller les fichiers dans l'explorateur de fichiers de windows à un autre endroit sur le disque dur sont les causes de cette erreur!!!!OriginalL'auteur Adam Hughes