2017-07-21 4 views
0

Bonjour J'utilise la classe X509V1CertificateGenerator pour générer un certificat de type X509Certificate. maintenant la classe X509V1CertificateGenerator est obsolète et l'alternative recommandée est X509v1CertificateBuilder mais je ne sais pas comment faire la migration.X509V1CertificateGenerator émigrent à X509v1CertificateBuilder

Voici le code:

X509V1CertificateGenerator certGen = new X509V1CertificateGenerator(); 

// set the necessary X500-fields 
X500Principal dnName = new X500Principal("CN=MyServerName"); 
certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis())); 
certGen.setIssuerDN(dnName); 

// expire-date 
Calendar expireDate = Calendar.getInstance(); 
certGen.setNotBefore(expireDate.getTime()); 

// expires in 25 years 
expireDate.add(Calendar.YEAR, 25); 
certGen.setNotAfter(expireDate.getTime()); 

certGen.setSubjectDN(dnName); // note: same as issuer 
certGen.setPublicKey(pair.getPublic()); 

// set the right signature-algorithm ->RSA/DSA 
if (this.algorithm) 
    certGen.setSignatureAlgorithm("MD5withRSA"); 
else 
    certGen.setSignatureAlgorithm("SHA1withDSA"); 

// generate the X509-certificate 
X509Certificate cert = certGen.generate(pair.getPrivate(), "BC"); 

Que dois-je faire pour faire de la migration?

Répondre

1

Essayez cette extrait de keycloak CertificateUtils

SubjectPublicKeyInfo subPubKeyInfo = SubjectPublicKeyInfo.getInstance(pair.getPublic().getEncoded()); 
X509v1CertificateBuilder builder = new X509v1CertificateBuilder(
     subjectDN, 
     serialNumber, 
     validityStartDate, 
     validityEndDate, 
     subjectDN, 
     subPubKeyInfo); 

AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find(signatureAlgorithm); 
AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId); 
ContentSigner contentSigner = 
     new BcRSAContentSignerBuilder(sigAlgId, digAlgId)     
       .build(PrivateKeyFactory.createKey(pair.getPrivate().getEncoded())); 

X509CertificateHolder holder = builder.build(contentSigner); 

X509Certificate cert = JcaX509CertificateConverter().getCertificate(holder);