Comment créer un certificat X509 en utilisant Java?


Je veux créer un certificat X509 en utilisant le langage Java, puis en extraire la clé publique.

J'ai cherché sur Internet et trouvé de nombreux exemples de code, mais tous ont des erreurs (variable inconnue ou type inconnu) ou ont de nombreux avertissements qui disent quelque chose comme : "la méthode ... de type ... est obsolète " etc.

Par exemple, pourquoi le code suivant ne fonctionne pas:

PublicKey pk;
CertificateFactory cf = CertificateFactory.getInstance("X.509");
String PKstr = pk.toString();
InputStream PKstream = new ByteArrayInputStream(PKstr.getBytes());
X509Certificate pkcert = (X509Certificate)cf.generateCertificate(PKstream);


Quelqu'un peut-il me montrer comment créer un certificat en utilisant Java pur ou Bouncy Castle et puis obtenir une clé publique de cela?

Merci à tous.

Author: informatik01, 2012-07-08

2 answers

Vous pouvez également générer un certificat en utilisant uniquement les classes JDK. L'inconvénient est que vous devez utiliser deux classes du soleil.sécurité.paquet x509. Le code serait:

KeyStore keyStore = ... // your keystore

// generate the certificate
// first parameter  = Algorithm
// second parameter = signrature algorithm
// third parameter  = the provider to use to generate the keys (may be null or
//                    use the constructor without provider)
CertAndKeyGen certGen = new CertAndKeyGen("RSA", "SHA256WithRSA", null);
// generate it with 2048 bits
certGen.generate(2048);

// prepare the validity of the certificate
long validSecs = (long) 365 * 24 * 60 * 60; // valid for one year
// add the certificate information, currently only valid for one year.
X509Certificate cert = certGen.getSelfCertificate(
   // enter your details according to your application
   new X500Name("CN=My Application,O=My Organisation,L=My City,C=DE"), validSecs);

// set the certificate and the key in the keystore
keyStore.setKeyEntry(certAlias, certGen.getPrivateKey(), null, 
                        new X509Certificate[] { cert });

Récupérez la clé privée du magasin de clés pour crypter ou déchiffrer les données. Basé sur le code est de http://www.pixelstech.net/article/1408524957-Generate-cetrificate-in-Java----3

 20
Author: iwan.z, 2014-10-08 08:30:34

Oui, avec BouncyCastle, la création d'un certificat X509 à partir de 2 clés publiques (la clé du certificat et celle de l'autorité de certification) se fait ici.

Je transforme le certificat résultant en PEM ici.

 5
Author: Pierre Carrier, 2012-07-08 14:40:38