Y at-il une possibilité de générer un java.security.cert.X509Certificate à partir d'un octet []?Générer X509Certificate à partir de byte []?
40
A
Répondre
58
Bien sûr.
Les objets de certificat peuvent être créés par une instance de CertificateFactory - en particulier, un configuré pour créer des certificats X509. Cela peut être créé comme ceci:
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
Ensuite, vous devez passer un InputStream contenant les octets du certificat. Ceci peut être réalisé en enveloppant votre tableau d'octets dans un ByteArrayInputStream:
InputStream in = new ByteArrayInputStream(bytes);
X509Certificate cert = (X509Certificate)certFactory.generateCertificate(in);
-1
InputStream stream = null;
byte[] bencoded = javax.xml.bind.DatatypeConverter.parseBase64Binary(x509CertificateStr);
try {
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
cert = (X509Certificate) certFactory.generateCertificate(stream);
} catch (java.security.cert.CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
+0
La question ne mentionne pas la base-64, et l'initialisation de 'stream' est manquante. Ce code va lancer une exception 'NullPointerException'. – EJP
Questions connexes
- 1. Comment obtenir X509Certificate à partir d'une URL HTTPS arbitraire?
- 2. Générer DynamicMethod à partir de MethodInfo
- 3. X509Certificate cryptage/décryptage
- 4. De byte [] à XmlTextReader
- 5. JRuby: Créer Java InputStream ou byte [] à partir de RubyString
- 6. Générer vCard à partir AddressBook.framework
- 7. Obtenir contexte SSL pour HttpsURLConnection de X509Certificate
- 8. Conversion de byte [] à chaîne
- 9. liste (de byte) à PictureBox
- 10. CGImage de byte array
- 11. WPF Image à byte []
- 12. OLEVariant à .Net byte []
- 13. Générer BitmapSource à partir de UIElement
- 14. Générer HTML à partir de JSP
- 15. Générer une miniature à partir de MKMapView
- 16. Générer XSD à partir de mon modèle
- 17. Générer XML à partir de PHP
- 18. Générer UML à partir de projets Flex
- 19. X509Certificate validation avec SerialNumber ou clé publique
- 20. générer tableview à partir du fichier plist
- 21. générer viewmodel à partir du modèle?
- 22. Générer javadoc directement à partir du référentiel?
- 23. générer html à partir du code derrière
- 24. Générer DropDownList à partir du code derrière
- 25. Java Swing Générer JTable à partir de POJO à l'exécution
- 26. Une meilleure façon de construire un paquet - Byte by Byte?
- 27. Taille de byte personnalisée?
- 28. Générer un diagramme de classes à partir de javadocs existants
- 29. Générer un fichier XML à partir de données de modèle
- 30. Générer des formulaires à partir de la base de données
Merci pour votre réponse. Mais je reçois "(java.security.cert.CertificateException) java.security.cert.CertificateException: Impossible d'analyser le certificat: java.io.IOException: Entrée vide" sur la dernière ligne. InputStream n'est pas vide, mais il lance Exception – 0bj3ct
La même chose m'est arrivée au début parce que je ne réfléchissais pas trop à ce que je faisais. Dans mon cas, c'était parce que j'essayais de faire ce qui précède avec les octets d'un keystore plutôt que le certificat dans le keystore. Extraire le certificat du keystore, obtenir les octets codés, puis travailler sur ceux-ci, a été ce qui a fait que cette réponse ci-dessus a fonctionné pour moi. –
Dans mon cas, le problème était que l'octet [] était encodé en base 64 ... Le message d'erreur était l'entrée "Empty input" légèrement trompeuse. Peut-être que cela aide quelqu'un ... – riskop