2013-12-12 4 views
12

Я новичок в области безопасности Java и наткнулся на эту библиотеку под названием bouncycastle. Но примеры, которые они предоставляют, и те из по интернету просят использовать -Создание CSR с использованием BouncyCastle API

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

Но когда я использую PKCS10CertificationRequest, похоже, это не рекомендуется. Поэтому я начал изучать другой метод, в котором я использую класс CertificationRequest. Но я действительно смущен, конструктор не принимает одинаковые параметры, вместо этого требуется класс CertificationRequestInfo, который я не уверен, как заполнить.

CertificationRequest request = new CertificationRequest(...); 

Было бы удивительным, если кто-то может помочь мне понять, как сделать КСО, так что я могу отправить его на сервер для получения его подписи.

Спасибо,

ответ

18

С недавних версиях BouncyCastle рекомендуется создать CSR с помощью org.bouncycastle.pkcs.PKCS10CertificationRequestBuilder класса.

Вы можете использовать этот код 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

Спасибо .. Как напечатать CSR? – Fox

+1

Я получил его .. сделал это с помощью класса PEMWriter .. Спасибо за помощь. – Fox

+2

Для нового кода я бы предложил использовать JcaPEMWriter вместо PEMWriter. Тот же интерфейс, но PEMWriter теперь устарел. –

Смежные вопросы