2013-12-12 15 views
12

Jestem nowy po stronie bezpieczeństwa Java i natknąłem się na tę bibliotekę o nazwie bouncycastle. Ale przykłady, które świadczą, że i te na zewnątrz na internecie zapytać w użyciu -Generowanie CSR za pomocą BouncyCastle API

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

ale kiedy używam PKCS10CertificationRequest, wygląda na to, że jest przestarzała. Zacząłem więc szukać innej metody, w której używam klasy CertificationRequest. Ale jestem naprawdę zdezorientowany, konstruktor nie przyjmuje tych samych parametrów, zamiast tego wymaga klasy CertificationRequestInfo, której nie jestem pewien.

CertificationRequest request = new CertificationRequest(...); 

To byłoby niesamowite, jeśli ktoś może mi pomóc dowiedzieć się, jak zrobić CSR, dzięki czemu można go wysłać do serwera dla coraz to podpisał.

Dzięki,

Odpowiedz

18

Z ostatnich wersjach BouncyCastle zaleca się stworzyć CSR przy użyciu klasy org.bouncycastle.pkcs.PKCS10CertificationRequestBuilder.

Można użyć tego kodu 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

Dzięki .. Jak mogę wydrukować CSR? – Fox

+1

Mam to ... zrobiłem to przy pomocy klasy PEMWriter .. Dzięki za pomoc. – Fox

+2

Dla nowego kodu sugeruję użycie JcaPEMWriter zamiast PEMWriter. Ten sam interfejs, ale PEMWriter jest teraz przestarzały. –