Создание CSR с использованием API BouncyCastle

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

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

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

    CertificationRequest request = new CertificationRequest(...);

Было бы здорово, если бы кто-то помог мне разобраться, как сделать CSR, чтобы я мог отправить его на сервер для его подписания.

Спасибо,

Ответ 1

В последних версиях 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);