2017-07-10 17 views
1

私の単体テスト用にx509証明書とキーペアを生成したい。私はjavacにはないことを知っているsun.securityを除いたキーペアでX509Certificateを作成する方法

error: cannot find symbol 
     CertAndKeyGen certGen = new CertAndKeyGen("RSA", "SHA256WithRSA"); 
     ^
symbol: class CertAndKeyGen 
location: class CertificationProviderSpecification 

error: package sun.security.tools.keytool does not exist

と:

private Pair<String, String> generateTokenAndCertificate() { 
    try { 

     //Configure generator 
     CertAndKeyGen certGen = new CertAndKeyGen("RSA", "SHA256WithRSA"); 
     certGen.generate(2048); 
     long validSecs = (long) 365 * 24 * 60 * 60; // valid for one year 


     //Token 
     CharSequence content = "test"; 
     Signer signer = new RsaSigner((RSAPrivateKey) certGen.getPrivateKey()); 
     String token = JwtHelper.encode(content, signer).getEncoded(); 

     //Certificate 
     X500Name data = new X500Name("CN=Test Application,O=Company,L=City,C=DE"); 
     X509Certificate cert = certGen.getSelfCertificate(data, validSecs); 
     Base64 encoder = new Base64(); 
     String certificate = X509Factory.BEGIN_CERT + "\n"; 
     certificate += encoder.encode(cert.getEncoded()); 
     certificate += X509Factory.END_CERT + "\n"; 

     return new Pair<>(token, certificate); 
    } catch (Exception e) { 
     return null; 
    } 
} 

問題は、私は

import sun.security.provider.X509Factory; 
import sun.security.tools.keytool.CertAndKeyGen; 
import sun.security.x509.X500Name; 

を使用し、これらのようなエラーを持っているということです負荷がいっぱいrt.jarに関してはct.symであり、私はまたはBouncy Castleによってこのようなエラーを解決することができました。

しかし、これらは、java.securityまたはorg.springframework.securityで生成できますか?

答えて

0

あなただけjava.securityを使用して、鍵ペアを作成することができます。

KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); 
gen.initialize(2048, SecureRandom.getInstance("SHA1PRNG")); 
KeyPair keyPair = gen.generateKeyPair(); 

をしかし、証明書を作成するには、sun.securityクラスを使用する必要があります。

私は、証明書を作成するためにorg.springframework.securityが、1つの良い代替手段を使ったことがないがBouncy Castle APIある - lots of online examplesがあり、org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilderクラスでご確認ください。

関連する問題