2013-12-12 3 views
12

Sono nuovo sul lato sicurezza di Java e ho trovato questa libreria chiamata bouncycastle. Ma gli esempi che essi forniscono e quelli fuori su internet chiedono di usare -Generazione del CSR utilizzando l'API BouncyCastle

 return new PKCS10CertificationRequest("SHA256withRSA", new X500Principal(
    "CN=Requested Test Certificate"), pair.getPublic(), null, pair.getPrivate() 

Ma quando uso PKCS10CertificationRequest, sembra che esso è deprecato. Così ho iniziato a guardare un altro metodo in cui utilizzo la classe CertificationRequest. Ma sono davvero confuso, il costruttore non prende gli stessi parametri, invece prende la classe CertificationRequestInfo che non sono sicuro di come riempire.

CertificationRequest request = new CertificationRequest(...); 

Sarebbe fantastico se qualcuno potesse aiutarmi a capire come fare un CSR in modo che io possa inviare al server per ottenere firmato.

Grazie,

risposta

18

Con le versioni recenti di BouncyCastle si consiglia di creare una CSR utilizzando la classe org.bouncycastle.pkcs.PKCS10CertificationRequestBuilder.

È possibile utilizzare questo codice snipppet:

KeyPair pair = generateKeyPair(); 
PKCS10CertificationRequestBuilder p10Builder = new JcaPKCS10CertificationRequestBuilder(
    new X500Principal("CN=Requested Test Certificate"), pair.getPublic()); 
JcaContentSignerBuilder csBuilder = new JcaContentSignerBuilder("SHA256withRSA"); 
ContentSigner signer = csBuilder.build(pair.getPrivate()); 
PKCS10CertificationRequest csr = p10Builder.build(signer); 
+0

Thanks .. Come si stampa la CSR? – Fox

+1

Ho capito .. l'ho fatto con l'aiuto della classe PEMWriter .. Grazie per l'aiuto. – Fox

+2

Per il nuovo codice suggerirei di usare JcaPEMWriter al posto di PEMWriter. Stessa interfaccia ma PEMWriter è ora deprecato. –